Book recommendation: A Philosophy of Software Design by John Ousterhout
After 25 years of programming, I had some vague ideas about how to write good software, but I hadn’t put them into a coherent framework. Currently, when LLMs are good at churning out low-level code but struggle with high-level design tasks, having a good understanding of software design is a very valuable skill.
Luckily, a few years ago, I saw John Ousterhout’s lecture in which he describes ideas about this topic from his book A Philosophy of Software Design.
This book argues that good software design helps you handle the complexity of the software by using problem decomposition. Most importantly, it gives a lot of practical advice that can be widely and repeatably applied. It’s a must-read for every programmer.