Tomasz Lelek wrote:Each chapter tries to focus on a different set of trade-offs; for example, in chapter 1, you will find trade-offs between flexibility and the cost of the potential of bugs and the evolution of your code.
Chapter 10 discussed trade-offs between consistency and atomicity in your systems. Chapter 6 focuses on Simplicity vs. the cost of maintenance for your API.
I find it interesting that these are all in the domain of the software development process itself.
There is, I think, another important trade off between ease/cost/simplicity of development and the cost/environmental impact of the deployed system.
As some examples...
Building a system with a pleasant and effective user interface which generates static files for a website is usually more software development effort than building a dynamic application, but can be much faster and use less energy and need fewer servers when deployed.You might want to write an embedded application in Java, say, but writing it in C might mean you can get away with a $1 microcontroller rather than a "proper" computer costing a hundred times as much and using at least ten times the power.