A Philosophy of Software Design cover
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
Check Price on Amazon →
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
MORE SOFTWARE CRAFT & CODE QUALITY BOOKS
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
Tidy First? cover
Kent Beck
Tidy First?
★ 4.4 · 420 RATINGS
The Pragmatic Programmer cover
David Thomas, Andrew Hunt
The Pragmatic Programmer
★ 4.7 · 4.8K RATINGS
Software Engineering at Google cover
Titus Winters, Tom Manshreck, Hyrum Wright
Software Engineering at Google
★ 4.6 · 712 RATINGS
Ready?
Check Price on Amazon →