A reading list for anyone who wants to learn how to approach system design and how to work as an architect. Each pick has its own review on this blog, and every entry links to it. The list starts with concrete design patterns, then moves through the design process, the architect's role, and trade-offs.
Why learn system design
As a system grows, its structure shapes quality and cost more than any single piece of code. System design teaches you to build a structure from requirements and to explain why you chose it. Putting design decisions into words also pays off when a whole team builds the system together.
1. Learn patterns through interview problems
System Design Interview – An Insider's Guide
The Japanese edition of Alex Xu's book. It treats large-scale system design as interview problems, so you can review design templates at your desk. I cover it in the review.
Trends and Strategies for System Design Interviews
Framed as interview prep, it teaches system design patterns through near-real examples. It also lists question patterns that probe design instincts, which helps interviewers too. See the review.
2. Learn the architecture design process
Principles of Building System Architecture
It covers architecture from start to finish: the definition, working with stakeholders, evaluation methods, and design techniques. It gives you a vocabulary for the design process. I wrote it up in the review.
Practical Techniques for Building System Architecture
Where the previous book covers the "why," this one covers the "how." It walks from requirements through logical and physical design, and shows how to document with views and record decisions. I cover it in the review.
3. The architect's role and mindset
Architect's Textbook
A true textbook that maps the areas an architect needs to know. Its notes and book recommendations make it a launch point for further study. See the review.
97 Things Every Software Architect Should Know
Short essays share the attitudes and thinking of well-known architects. You can dip in anywhere and come back to it over time. I wrote it up in the review.
4. Trade-offs and non-functional requirements
Trade-offs and Mistakes in Software Design
It shows why you should weigh design trade-offs side by side, with concrete cases. It pushes you to record why you rejected the options you did not pick. I cover it in the review.
Mistakes in Software Architecture
An essay-style book on developing and evaluating non-functional requirements, told in a casual voice. If you only want the technical parts, start from the later chapters. See the review.
Wrap-up
Start with the two interview books to pick up design templates, then learn the process with the two architecture-building books. Open the books on the architect's role and trade-offs when a real design decision has you stuck. Every book has a full review here, so start with whichever one interests you most.