The Problem is Us
There’s a lot of important ideas in The Humble Programmer but perhaps the most important one is that of intellectual manageability. This is such a fantastically important concept that it’s a bit of a relief to finally have a clear name for it. It is, I think, the central idea of programming. One could go so far as defining programming as the art of making the intellectually unmanageable, manageable. The most immediately positive aspect of such a definition is that it shifts focus away from the tools and technologies and processes used in programming to the one place where it ought to have always been: the programmers themselves. (It also provides a vital mechanism for evaluating all those myriad tools and technology and processes.)
If, as they say, the problem is us then it suggests that any real solution, any significant improvement has to start with us. Further, as Dijkstra emphasizes, it has to start with the recognition of our limits. Intellectual manageability suggests not only that there is much that we don’t understand but there’s also much we can’t understand. Closely examining these limits of programming might help not only those problems where technology could prove most helpful but also those where it doesn’t help much at all. This would suggest a kind of Hippocratic Oath for software engineers, an emphasis to first, do no harm by introducing systems that decrease intellectual manageability. This isn’t simply to say that we should adopt the simplistic binary of “complexity” vs “simplicity” and always aim for the latter. Indeed simplicity and complexity are totally secondary; the critical question is one of do we understand what we are doing or not?