What system design actually is
corebeginnerSystem design is the process of turning a stated requirement into an architecture: which components exist, how data moves between them, what APIs and storage they use, and how the whole thing behaves when something goes wrong.
Think of it as
A requirement is a sentence. A system design is everything that sentence implies once you ask: who calls this, how often, what does it store, and what happens the moment one piece of it fails.
What we're doing: Show that a one-line requirement is underspecified until it is translated into concrete design decisions.
- 1
- This is the entire requirement as stated. Nothing about it is wrong — it is just incomplete for building.
- 3
- Every one of these questions has a real answer that changes the resulting architecture.
- 7
- This is a failure-handling question, and spec/08’s standard is that a design must answer it explicitly, not by accident.
Why this works: A requirement in plain English hides dozens of decisions. System design is the deliberate act of making each of those decisions explicit — architecture, components, data flow, APIs, storage, operations, and failure handling — rather than letting the first implementation choose them by accident.
Treating the requirement as the design
Wrong
Better
What you see: Two engineers implement the same one-line requirement differently, and the failure behavior — what happens when the upload succeeds but the database write does not — is never decided by anyone, only discovered in production.
Why: Skipping the translation step does not remove the decisions — it just defers them to whoever writes the code first, silently, with no review and no record of why.
- Requirement — one sentence
- leads to Architecture (translated into)
- Architecture — components + boundaries
- leads to Data flow (wired together by)
- Data flow — who calls whom, with what
- leads to Operational behavior (must survive)
- Operational behavior — failure handling, scaling
Remember: System design translates a requirement into architecture, data flow, APIs, storage and failure handling — a box diagram alone is not a design.
See also: core vocabulary · functional vs nonfunctional

