The interviewer slides a blank whiteboard marker across the table and says: “Design Twitter.” You have forty-five minutes. Most engineers reach for the marker immediately and start drawing boxes. They draw a server, a database, a load balancer — the things they know. Twenty minutes in, the interviewer asks what happens when a celebrity with fifty million followers posts. The boxes stop making sense.
System design is not a drawing exercise. It is a reasoning exercise that happens to produce drawings. The failure mode is not drawing the wrong boxes — it is drawing boxes before understanding what the system must do, at what scale, under which failure conditions, and how it will change over time. This chapter establishes a discipline for approaching any system design problem from first principles, using the frameworks built throughout this series.