Pages
196
Year
2021
Level
intermediate
Read time
5h
John Ousterhout · Yaknyam Press · 2021
Reviewed by Ashish Sheth · Updated June 2026
A Philosophy of Software Design
2nd Edition
4.6 / 5
AMAZON · 1.3K RATINGS
software craft
SUBJECTS
What you'll come away with
01.
A clear vocabulary (deep modules, complexity, obviousness) for code review feedback
02.
Why most "clean code" rules are tactical and miss the strategic point
03.
How to detect when you're solving the wrong problem with the wrong abstraction
04.
When to write comments and when comments signal a deeper design flaw
05.
How information hiding pays compounding interest across a codebase
06.
Concrete tests for whether a module is genuinely simple or just appears simple
Strengths
+Short and punchy: most engineers finish it in a long weekend
+Reframes everyday design decisions with sharper language
+Quietly contradicts several popular Clean Code rules with stronger arguments
+2nd edition adds three new chapters and tightens the original prose
Caveats
−Examples are small and educational — some readers want bigger real-world systems
−Disagrees with Robert C. Martin's Clean Code, which can be jarring if you've internalized that book
−Light on coverage of distributed systems or concurrent design
★ 4.6 FROM 1.3K READERS ON AMAZON
Check Price on Amazon →
Read this if
→Engineers stuck at mid-level who keep getting "too complex" feedback in code review
→Tech leads who want shared language for design discussions
→Anyone who's read Clean Code and felt something was off
Skip this if
—Beginners who haven't yet shipped enough code to feel complexity bite
—Engineers looking for distributed systems or architecture-level guidance
—Readers who want a step-by-step refactoring catalog (read Tidy First instead)
Head-to-head comparisons
A Philosophy of Software Design vs Designing Data-Intensive Applications → A Philosophy of Software Design vs The Pragmatic Programmer → A Philosophy of Software Design vs Tidy First? → A Philosophy of Software Design vs Software Engineering at Google → A Philosophy of Software Design vs Domain-Driven Design → A Philosophy of Software Design vs Clean Code → A Philosophy of Software Design vs Refactoring → Frequently asked
Is A Philosophy of Software Design better than Clean Code?
They disagree on several specifics — Ousterhout argues for deeper modules and longer functions where Martin argues for shorter functions and tighter classes. Most engineers benefit from reading both, then trusting Ousterhout's framing on disagreements: it's the more rigorous of the two.
What's new in the 2nd edition of A Philosophy of Software Design?
Three new chapters (on errors, summary advice, and a longer worked example), refined explanations throughout, and updated examples. If you read the 1st edition and got the core ideas, the 2nd is a refresh, not a re-read.
How long is A Philosophy of Software Design?
About 196 pages. Most engineers finish it in a weekend or two evenings. Plan to re-read the first three chapters once you've tried applying the ideas — they reward a second pass.
Read this next
4 alternatives
Ready?
Check Price on Amazon →