Software Engineering Architecture Lab

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

Clean Coder — Robert C. Martin

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

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

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.