How the Software Architecture Books Connect
A reading map for ten classic software engineering books: the order to read them, how ideas pass between them, and which curriculum levels each one feeds.
Pragmatic Programmer — David Thomas, Andrew Hunt
- Level 1: Engineering Foundations — Make changes cheap: spot duplicated knowledge, hidden coupling and irreversible decisions early.
- Level 2: Clean Code & Professional Engineering — Write code others can safely change, and behave like a professional under pressure.
- Level 3: Object-Oriented Design — Design classes and interfaces so new requirements mean adding code, not editing fragile code.
Clean Coder — Robert C. Martin
- Level 2: Clean Code & Professional Engineering — Write code others can safely change, and behave like a professional under pressure.
- Level 1: Engineering Foundations — Make changes cheap: spot duplicated knowledge, hidden coupling and irreversible decisions early.
Design Patterns — Eric Freeman, Elisabeth Robson, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
- Level 3: Object-Oriented Design — Design classes and interfaces so new requirements mean adding code, not editing fragile code.
- Level 4: Design Patterns — Recognise the recurring pain behind a design, and reach for the pattern that relieves it — or decide you do not need one.
Software Architecture — Mark Richards, Neal Ford, Pramod Sadalage, Zhamak Dehghani
- Level 7: Software Architecture — Identify the characteristics that matter, compare styles by their trade-offs, and record decisions so others understand why.
- Level 9: Microservices — Decide whether microservices are worth it, draw service boundaries, and design communication and failure handling that survive production.
- Level 10: Architecture That Survives Change — Protect architecture characteristics automatically and evolve the system incrementally instead of by big rewrites.
PEAA — Martin Fowler
- Level 5: Enterprise Application Architecture — Structure a business application into layers, choose how domain logic and data access are organised, and understand what your framework does for you.
DDD — Eric Evans
- Level 6: Domain-Driven Design — Model a complex business domain in code, and draw boundaries where the language changes.
- Level 9: Microservices — Decide whether microservices are worth it, draw service boundaries, and design communication and failure handling that survive production.
Evolutionary Architecture — Neal Ford, Rebecca Parsons, Patrick Kua, Pramod Sadalage
- Level 10: Architecture That Survives Change — Protect architecture characteristics automatically and evolve the system incrementally instead of by big rewrites.
DDIA — Martin Kleppmann
- Level 8: Data-Intensive Systems — Explain how databases store, replicate, partition and protect data — and predict how they fail.
- Level 9: Microservices — Decide whether microservices are worth it, draw service boundaries, and design communication and failure handling that survive production.
- Level 11: Production Architecture — Design, operate and reason about a system at global scale — and put every previous level together.
Building Microservices — Sam Newman
- Level 9: Microservices — Decide whether microservices are worth it, draw service boundaries, and design communication and failure handling that survive production.
- Level 11: Production Architecture — Design, operate and reason about a system at global scale — and put every previous level together.
Enterprise Integration — Gregor Hohpe, Bobby Woolf
- Level 5: Enterprise Application Architecture — Structure a business application into layers, choose how domain logic and data access are organised, and understand what your framework does for you.
- Level 9: Microservices — Decide whether microservices are worth it, draw service boundaries, and design communication and failure handling that survive production.
- Level 8: Data-Intensive Systems — Explain how databases store, replicate, partition and protect data — and predict how they fail.