How to structure a system design interview
A system design interview rewards a visible method more than a clever diagram. Spend the 45 minutes in a fixed order (requirements, estimates, API, data model, high-level design, deep dives, then trade-offs and failure modes) and say at each step what you decided and why.
By Evin JohnPublished 9 min read
1. What the framework is
A system design framework is a fixed order of stages you apply to any open prompt, from "design a URL shortener" to "design WhatsApp". It is not a script. The interviewer will interrupt, redirect and probe, and the framework is what lets you get back to where you were. It exists because every prompt is far too large for 45 minutes, so the real task is choosing what to build, what to skip, and saying so out loud.
2. Why interviewers care about structure
There is no single correct answer to a design prompt, so the interviewer grades how you get to one. Rubrics differ between companies, but most look for the same things: you explore the problem before solving it, your choices follow from requirements and numbers, you can name what each choice costs, and you can go one level deeper when asked.
Structure makes those signals visible. A candidate who jumps straight to boxes and arrows may know all the right components, but the interviewer cannot see why they were chosen. A candidate who works in order leaves a trail the interviewer can write up afterwards, which matters because the write-up, not the conversation, is what the hiring committee reads.
3. The 45-minute plan, stage by stage
| Stage | Minutes | What is on the board at the end |
|---|---|---|
| Requirements | 0 to 5 | Functional list, non-functional targets, an out-of-scope list |
| Estimates | 5 to 10 | Requests a second (average and peak), storage, bandwidth, the read/write ratio |
| API | 10 to 13 | Two to five calls with their inputs and outputs |
| Data model | 13 to 16 | The main entities, their keys and the access pattern for each |
| High-level design | 16 to 25 | One request traced end to end through clients, services, storage, caches and queues |
| Deep dives | 25 to 38 | One or two components designed in detail |
| Trade-offs and failure modes | 38 to 43 | What breaks first, what you rejected and why |
| Wrap-up | 43 to 45 | A short summary and your questions |
- RequirementsAsk who uses the product, which features matter and at what scale. Write functional requirements (what it does) apart from non-functional ones (latency, availability, durability, consistency). End with an explicit out-of-scope list: it protects you later when the interviewer asks about something you chose not to build.
- EstimatesTurn users into requests a second, storage and bandwidth, with every figure labeled as an assumption. The goal is to find the bottleneck: reads, writes, storage, or fan-out. See capacity estimation for the arithmetic.
- APIName the calls that carry the product, such as
POST /messagesandGET /conversations/{id}/messages?before=. Pagination, idempotency keys and authentication are worth one sentence each here, because they come back in the deep dive. - Data modelList the entities and, for each, how it is read: by primary key, by range, by search. The access pattern decides the store and the partition key, so say it before choosing a database. See SQL vs NoSQL.
- High-level designDraw the simplest design that meets the requirements and walk one request through it, then the other main request. Only add a cache, a queue or a replica when you can say which requirement or number needs it.
- Deep divesPick the one or two parts that make this product hard and go into detail: the schema, the partition key, the algorithm, the retry policy. Offer a choice ("I can go deeper on fan-out or on storage; which is more useful?"), because many interviewers have a part they want to see.
- Trade-offs and failure modesFor each major component, say what happens when it dies, when traffic grows tenfold, and what you would have done with different requirements. Name the alternative you rejected for each big choice.
- Wrap-upSummarize in three sentences: the core design, the main trade-off, and what you would build next. Then ask your questions.
4. What to say at each stage
Short, explicit sentences turn your thinking into something the interviewer can write down. These are patterns, not lines to recite; put them in your own words.
| Stage | Say something like | Why it helps |
|---|---|---|
| Requirements | "Before I draw anything, can I check what is in scope? I am assuming X and Y, and leaving Z out unless you want it." | Shows you scope before solving, and makes assumptions checkable |
| Estimates | "I will assume 10 million daily users. That gives roughly 1,000 writes a second, so a single primary can take the writes for now." | Ties a number to a decision in one breath |
| API | "These three calls carry the product. The write is idempotent so a client can safely retry." | Signals you think about clients and failures early |
| Data model | "Messages are always read by conversation, newest first, so the conversation ID is the partition key." | Derives storage from access pattern |
| High-level | "Let me trace one send end to end, then one read." | Keeps the diagram honest and in step with your words |
| Deep dive | "The hard part here is fan-out. I see two options; here is what each costs." | Names the difficulty and frames a choice |
| Trade-offs | "I chose X over Y because of the read-heavy ratio. If writes dominated, I would switch." | Shows the choice depends on requirements, not habit |
| Check-in | "Is this the level of detail you want, or should I go deeper here?" | Lets the interviewer steer before you spend ten minutes |
5. What to do when you are stuck
Everyone stalls at some point. Silence is the costly part, not the stall itself. Work through these in order.
- Say that you are thinking"Give me a moment to think about how to keep these counters consistent." A short, announced pause reads as care. A long, silent one reads as lost.
- Go back to the requirementsMost dead ends come from solving a harder problem than the one asked. Re-read the list: does this feature really need strong consistency, or real-time delivery?
- Start with the simplest version"The naive approach is one database table with a lock. That breaks at about this many writes, so let me improve it." A working baseline, then an improvement, is a perfectly good answer.
- Reason from the numbersIf you cannot decide between two designs, ask which one the estimates rule out. Thousands of writes a second and millions are different systems.
- Ask a narrow questionNot "what do you want me to do?" but "is it acceptable for a user to see a like count that is a few seconds stale?" A narrow question shows you have found the real decision.
- Park it and move on"I will mark this as an open question and come back to it." Then do come back. Leaving one part open is far better than spending the whole deep dive on it.
6. What changes by level
Level names and expectations differ between companies, so treat this as a common pattern, not any one company's rubric. The same prompt can be a pass at one level and a miss at the next.
| Area | Mid-level | Senior | Staff |
|---|---|---|---|
| Scope | Clarifies features when prompted | Drives scoping and names non-functional targets unprompted | Questions the framing: what problem the business is solving, and what not to build |
| Design | A working design with standard components | A design whose choices follow from the estimates | Several viable designs compared, with a reasoned pick |
| Depth | Can explain each component when asked | Goes deep on the hard part without being led there | Goes deep and connects it to operations, cost and migration |
| Trade-offs | Names some | Names the alternative for each major choice and what it costs | Weighs trade-offs over time: what changes at ten times the scale, who owns it |
| Failure | Mentions replication and retries | Walks through specific failures and their blast radius | Adds detection, rollout, degradation modes and recovery |
| Conversation | Follows the interviewer's lead | Leads, checks in at the right moments | Leads, and treats the interviewer as a colleague in a design review |
7. How the plan bends for common prompts
The order stays the same, but each prompt has its own hard part, and that is where the deep dive goes.
| Prompt | The deep dive | Stage that needs extra care |
|---|---|---|
| URL shortener | Collision-free code generation and the cached redirect path | Estimates (the read/write ratio decides everything) |
| Rate limiter | The algorithm and where its counters live | Requirements (per user, per IP or per key? hard or soft limit?) |
| Twitter timeline | Fan-out on write versus on read, and the celebrity problem | Estimates (fan-out multiplies writes) |
| Persistent connections, delivery receipts and message ordering | Data model (partition by conversation) | |
| Payment system | Idempotency, the ledger and reconciliation | Failure modes (double charges are the real risk) |
| Collaborative editor | Merging concurrent edits (OT or CRDTs) | Requirements (offline editing changes the design) |
8. Mistakes to avoid
- Drawing before asking. Five minutes of questions saves twenty minutes of designing the wrong product.
- Estimates that go nowhere. If you compute storage, use it: "about 90 TB, so this has to be partitioned."
- Naming technologies instead of reasons. "Kafka" is not a design decision. "A durable queue so that slow consumers do not block the write path" is.
- Breadth with no depth. Fifteen boxes, none explained, scores worse than six boxes and one that you can take apart.
- Ignoring the interviewer's hints. A question like "what if this service is slow?" is usually a request to talk about exactly that.
- Treating it as a monologue. Check in every few minutes. The interviewer may be waiting to redirect you.
- No failure discussion. Leaving no time for what breaks is one of the most common reasons a solid design still misses the bar.
9. How to talk through it: a worked opening
The first five minutes set the tone for the whole round. Here is an opening for a notification system prompt that covers scope, estimates and the plan in about three minutes of speech.
Fictional example
- Interviewer
- Design a notification system for a large consumer app.
- Candidate
- Before I draw anything: which channels? Push, email and SMS, or just push? And are these triggered by other services, by marketing campaigns, or both?
- Interviewer
- All three channels. Both kinds of trigger.
- Candidate
- Then I will treat transactional messages, like a password reset, as high priority, and campaigns as bulk. I will leave the template editor and campaign analytics out of scope unless you want them. Users must be able to opt out per channel.
- Candidate
- For scale I will assume 20 million daily active users and 10 notifications per user a day. That is 200 million a day, or about 2,300 a second on average. A campaign could burst to ten times that, so I will plan for about 25,000 a second. The burst is the design problem, so I will put a queue between the producers and the senders.
- Candidate
- My plan: the send API, the data model for preferences and delivery state, the high-level flow, then a deep dive on priority queues and retries with third-party providers. Does that match what you want to see?
A checklist to print
[ ] Restated the prompt in one sentence
[ ] Functional requirements written down
[ ] Non-functional targets: latency, availability, durability, consistency
[ ] Out-of-scope list agreed
[ ] Assumptions labeled: users, actions a day, object sizes
[ ] Average and peak requests a second, read/write ratio
[ ] Storage over the retention period, bandwidth
[ ] Two to five API calls, with idempotency where retries happen
[ ] Entities, keys and the access pattern for each
[ ] One request traced end to end on the diagram
[ ] Every cache, queue and replica justified by a number or requirement
[ ] One or two deep dives, chosen with the interviewer
[ ] For each big choice: the alternative and its cost
[ ] Failure of each main component, and a tenfold traffic increase
[ ] Three-sentence summary and your questionsPracticing with Natively
The framework only becomes automatic through spoken practice. Run a mock interview with a friend on a call, or read a prompt aloud and answer it as if someone were listening. Natively transcribes the conversation live and can suggest talking points for each question as it comes in; comparing them with what you said is a quick way to spot gaps such as failure modes or the out-of-scope list. If you sketch a diagram or capture a problem statement, it can explain the screenshot. Afterwards, the transcript and notes are kept for review, so you can check how long each stage really took.
Questions people ask
How long should each stage of a system design interview take?
In a 45-minute round, a common split is about 5 minutes on requirements, 5 on estimates, 6 on the API and data model, 9 on the high-level design, 13 on deep dives, 5 on trade-offs and failures and 2 to wrap up. Treat it as a budget, not a rule. When time runs short, cut the estimates and the API first, never the requirements or the deep dive.
What should I do if I get stuck in a system design interview?
Say that you are thinking rather than going silent, then go back to the requirements, since most dead ends come from solving a harder problem than the one asked. Offer the simplest version that works and improve it, or ask a narrow question about the decision you are stuck on. If it still does not resolve, park it as an open question and come back to it.
How do system design expectations differ between mid-level, senior and staff candidates?
Mid-level candidates are expected to produce a working design and explain its parts when asked. Senior candidates should drive the scoping, justify choices with estimates and name the trade-off behind each major decision. Staff candidates are also expected to question the framing, compare several designs and discuss operations, migration and long-term cost; the exact bar varies by company.
Where to go next
Practice with the same assistant you would use on a call: it listens, transcribes and suggests answers from your own resume and the job description.
Facts on this page were last checked on . Product details come from the Natively app itself; if something here is out of date, tell us at hello@heynatively.com.
