This is a staged reading list for anyone learning software architecture, from the fundamentals to real practice. Each pick has its own review on this blog, and every entry links to it. The order follows a learning path: fundamentals, trade-offs, domain-driven design, microservices, and API design.
Why learn software architecture
Architecture shapes how well a system scales and stays maintainable for years. Tools and frameworks change, but the skill of structuring systems carries across domains. Learn the fundamentals from solid books, and you move past ad-hoc design.
1. Build the fundamentals
Fundamentals of Software Architecture, 2nd Edition
A systematic tour of the core ideas, from architecture characteristics to trade-offs. It defines its terms with care, which makes it a strong first read. I cover it in the review.
Clean Architecture
A classic on controlling the direction of dependencies to build change-tolerant structures. It grounds SOLID and layering in practical terms. My notes are in the review.
Design It!
A practical look at how architects think and run the design process. It hands you concrete methods when you are unsure how to proceed. I dig into it in the review.
2. Trade-offs and decisions
Building Evolutionary Architectures
It treats constant change as a given and shows how to evolve architecture over time. Fitness functions give you a way to catch design erosion early. See the review for more.
Software Architecture: The Hard Parts
A practical book on the hard calls: service granularity, data ownership, and distributed data. It puts trade-offs into words so you can reason about them. I break it down in the review.
Decision-Making for Software Architects
It frames decisions through leadership, technology, and product management, not code alone. It helps architects deliver results inside an organization. My take is in the review.
3. Domain-driven design
Getting Started with Domain-Driven Design
A gentle entry point that ties implementation to business strategy. It lets you learn DDD without drowning in jargon. I wrote up the details in the review.
Eric Evans' Domain-Driven Design
The original text that organizes model-centered thinking for tackling complexity. It asks for effort, yet it sharpens your shared design language. I explore it in the review.
4. Microservices and distributed systems
Building Microservices, 2nd Edition
A broad, updated reference for designing and operating microservices. It covers splitting, communication, and deployment for daily work. See the review.
Monolith to Microservices
A realistic, step-by-step guide to breaking apart an existing monolith. It favors gradual migration over a risky rewrite. My notes live in the review.
Designing Data-Intensive Applications
A landmark book that explains distributed data through reliability, scalability, and maintainability. It builds deep intuition for storage and replication. I cover it in the review.
5. API design
Web API: The Good Parts
Practical guidance for designing Web APIs that people enjoy using. Its advice on URI design and error handling maps straight onto daily work. I wrote about it in the review.
Wrap-up
Start with the three fundamentals, then move into trade-offs and domain-driven design. Reach for microservices and API design when a project calls for them. Every book has a full review here, so start with whichever one interests you most.