A Philosophy of Software Design
John Ousterhout presents software design as the disciplined management of complexity, with practical principles for creating deep modules and clear abstractions.
Yaknyam Press · 2021 · 196 pages · ISBN 9781732102217
Topics: Design Theory, Systems Thinking, Professional Practice
[ Purchase this book ]
Purchase this book
Why it matters
Ousterhout connects the quality of a software system to the way its complexity is divided and hidden. That makes the book relevant beyond programming: it is a precise study of abstraction, interfaces, information hiding, and the long-term consequences of design decisions.
Best for
Best for engineers, technical product designers, and design-minded leaders who work on systems that must evolve. The second edition is concise enough to use as a shared vocabulary during architecture discussions and code review.
What you’ll learn
You will learn to recognize shallow modules, complexity leakage, temporal decomposition, and other warning signs of fragile design. The central lesson is to invest continuously in deep, general-purpose abstractions that make the rest of a system easier to understand.


