A Philosophy of Software Design versus Designing Data-Intensive Applications.

Both show up on every "best" list. They're not competitors. They're a sequence. Here's which one to read first, and when.

Reviewed by Ashish Sheth · Updated June 2026
Option A
A Philosophy of Software Design
A Philosophy of Software Design
John Ousterhout · 2021
READ FULL REVIEW →
Option B
Designing Data-Intensive Applications
Designing Data-Intensive Applications
Martin Kleppmann, Chris Riccomini · 2026
READ FULL REVIEW →
Author
John Ousterhout
Martin Kleppmann, Chris Riccomini
Pages
196
720
Published
2021
2026
Publisher
Yaknyam Press
O'Reilly Media
Level
intermediate
intermediate to advanced
Amazon Rating
4.6/5 (1,320)
4.7/5 (312)
Goodreads Rating
4.19/5 (4,100)
4.55/5 (480)
A Philosophy of Software Design
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
Designing Data-Intensive Applications
Strengths
+ Best-in-class explanations of distributed systems fundamentals
+ Vendor-neutral: teaches principles, not specific tools
+ Excellent diagrams that make consensus and replication finally click
+ 2nd edition refreshes every chapter and adds AI/ML data systems coverage
Caveats
Dense: not a weekend read, expect 3-4 months at one chapter per week
Light on hands-on code; pair with a database internals book for implementation depth
Some readers wish the new edition went deeper on cloud-native specifics
The verdict
Read A Philosophy of Software Design first to build foundations, then move to Designing Data-Intensive Applications for advanced concepts.
A Philosophy of Software Design
Check Price on Amazon →
Designing Data-Intensive Applications
Check Price on Amazon →
Frequently asked
Which is better, A Philosophy of Software Design or Designing Data-Intensive Applications?
Read A Philosophy of Software Design first to build foundations, then move to Designing Data-Intensive Applications for advanced concepts.
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.
Is the 2nd edition of Designing Data-Intensive Applications worth buying if I already own the first?
If you read the first edition cover to cover already, the upgrade is incremental: every chapter is refreshed and there's new coverage of AI/ML data systems, cloud-native architectures, and modern streaming. If you skimmed the first or read it years ago, the 2nd edition is the better starting point.