A programming language is low level when its programs require attention to the irrelevant.
—Alan Perlis
The core question of this book is how to increase productivity and quality in software development. In Chapter 1, I discussed in particular how productivity has been stagnating for a while. I also surveyed past concepts and frameworks. Now it’s time for more in-depth analysis: what’s going wrong, and why.
Those who argue that nothing’s wrong may have plenty of ammunition. Suppose we are building a web client. We build a neat service layer and put a database below that—a ...