Reading Notes: A Philosophy of Software Design
These are my ongoing reading notes for A Philosophy of Software Design by John Ousterhout. I’m still working through the book, so this post will be updated as I go. 1. The Root Causes of Complexity Complexity in software systems is primarily driven by two interrelated forces: Dependencies: When a given piece of code cannot be understood or modified in isolation. Obscurity: When important information about the system is not obvious or easily discoverable to the developer. 2. Tactical vs. Strategic Programming Simply writing “working code” isn’t enough to sustain a scalable system. ...