System Design Handbook · llms.txt
System design is the work of deciding how a piece of software is split into parts, where its data lives, and how those parts talk to each other so the whole thing stays fast, available and affordable as it grows. This handbook teaches it from the ground up, in one place, with a worked example in every chapter and a source you can check for every real-world number.
It serves two goals:
The subject is broad, and good material on it is scattered across blog posts, papers, talks and post-mortems. The handbook gathers it into a single course with one order, one running set of examples and one place to track your progress.
The chapters build on each other, so the order matters most at the start.
Every chapter ends with Check yourself questions. Try to answer each one before you open it. Then each chapter lists Further reading, the sources it draws on, for when you want to go deeper.
No. You don't need to know everything in this handbook to do well in an interview.
What you get asked depends on several things:
Experienced candidates are usually expected to know more about system design than people early in their careers. Architects and team leads may be expected to know more than individual engineers. Large tech companies often have one or more system design rounds.
The best approach is to start broad, then go deep in a few areas. It helps to know a little about every key topic, so that nothing in an interview is completely new. Then pick a few areas, perhaps the ones closest to the jobs you want, and learn them well.
How you spend your time depends on how long you have before your interviews. The home page can turn any of these into a study plan, with a daily goal and your progress tracked as you mark sections done.
Here is what each plan covers:
| Activity | Short | Medium | Long |
|---|---|---|---|
| Read the topic chapters (start here, trade-offs, building blocks) to understand how systems work | Yes | Yes | Yes |
| Read the deeper concepts, from consistent hashing to batch processing | No | Yes | Yes |
| Read a few articles from the engineering blogs of the companies you're interviewing with | Yes | Yes | Yes |
| Read a few real-world architectures | Yes | Yes | Yes |
| Review the system design interview, step by step | Yes | Yes | Yes |
| Work through the system design questions | Some | Many | Most |
| Work through the object-oriented design questions | Some | Many | Most |
| Try questions from the practice question bank | Some | Many | Most |
The Reference part has three chapters to come back to: Numbers to know for estimates, Practice questions for more questions to try, and Real-world architectures for papers, company architectures and engineering blogs.
Reading a chapter once is not the same as being able to use it in an interview. A few habits help it stick:
This handbook is open source. The site's code and all its chapters are on GitHub. The chapters are published under the Creative Commons Attribution 4.0 license, so you may share and adapt them as long as you credit the source.
If you find a mistake, a broken link or a topic that's missing, open an issue or a pull request there. Corrections are welcome, and each chapter's sources are listed so you can check any claim yourself.
Breadth. Read the topic chapters so that no common building block or trade-off is new to you, and review the four interview steps. Then work through some of the design questions, out loud and timed, and compare your answers with the worked solutions. With little time, depth in one area matters less than not being caught out by a topic you've never heard of.
Trying to recall an answer shows you what you actually know, and the effort of recalling it helps you remember it later. Reading the answer first feels like understanding, but it doesn't tell you whether you could produce that answer yourself in an interview.
Not quite. Both should cover the basics, but interviewers usually expect more depth from experienced candidates, and even more from people interviewing for architect or lead roles. The experienced engineer should plan for deeper follow-up questions on trade-offs and scaling, and use a longer study plan if time allows.