The 45-Minute Framework: How to Pace Any System Design Interview

Dan Lee's profile image
Dan LeeData & AI Lead
Last updateMarch 6, 2026

Why This Matters

You're 25 minutes into a system design interview for a senior role. You've drawn a clean schema with perfectly normalized tables, your API contracts are typed and versioned, and you're feeling good. Then the interviewer asks, "So how does this hold up when you go from 1,000 to 10 million users?" You glance at the clock. Fifteen minutes left. Not enough time to discuss caching, partitioning, replication, or failure modes with any real depth. You rush through a few surface-level answers, and the round ends with you knowing exactly what happened: you spent your entire budget on the parts that don't differentiate you.

This is the most common way people fail system design interviews. Not because they lack the knowledge. Because they never get to the part where that knowledge matters. Your interviewer is sitting there with a mental scorecard covering 4 to 6 evaluation areas: requirements gathering, high-level architecture, detailed design, scalability, trade-off analysis, communication. If you burn 25 minutes on API design and schema, you've handed them a scorecard that's mostly blank. They can't give you credit for things you never discussed.

The fix isn't "study harder" or "learn more distributed systems concepts." The fix is a pacing plan. That's what this guide gives you: a repeatable, phase-by-phase framework calibrated to the 45 to 50 minutes of actual design time you get in a real interview (after introductions, before Q&A). It works for any prompt, whether you're designing a chat system, a rate limiter, or a video streaming platform. You won't need to waste mental energy wondering "what should I do next?" because you'll already know. That frees you up to do the thing that actually wins interviews: think clearly about the problem in front of you.

The Framework

Here's the entire interview, broken into five phases. Memorize this table. Tattoo it on the inside of your eyelids if you have to. Everything else in this guide is commentary on these five rows.

PhaseTimeGoal
1. Requirements & Scope0:00 – 5:00Lock down what you're building, how big it is, and what you're not building
2. High-Level Design5:00 – 10:00Draw 5-7 boxes, connect them, and trace the primary read/write path
3. Deep Dives10:00 – 30:00Go deep on 2-3 areas with trade-offs, alternatives, and justified decisions
4. Scale & Bottlenecks30:00 – 40:00Break your own design at 10x and 100x, then fix it
5. Wrap-Up40:00 – 45:00Summarize, acknowledge trade-offs, name what you'd improve

Notice the time distribution. Phase 3 gets twenty minutes, more than all other phases combined. That's intentional. The deep dives are where you earn your level. Everything before them is setup; everything after is polish.

The 45-Minute Framework: Phase Timeline

Phase 1: Requirements & Scope (Minutes 0–5)

What to do:

  1. Ask about core use cases. Not "what are the requirements?" (too vague) but specific functional questions: "Should users be able to do X? Do we need to support Y?" Aim for 3-5 functional requirements, written down where the interviewer can see them.
  2. Nail down 2-3 non-functional requirements with numbers. Ask about scale ("How many users? How many requests per day?"), latency expectations ("Is this real-time or is eventual consistency okay?"), and availability needs. If the interviewer says "you decide," that's a test. Pick reasonable numbers and state them out loud.
  3. Explicitly declare what you're NOT building. This is the move that separates prepared candidates from everyone else. Saying "I'm going to leave out the analytics dashboard and admin panel for now" shows you can scope a problem, and it protects you from accidentally wandering into those areas later.

What to say:

  • "Before I start designing, I want to make sure I understand the core use cases. The way I see it, the primary flows are [X] and [Y]. Does that match your expectations?"
  • "For scale, I'll assume we're targeting around [N] daily active users and roughly [M] requests per second at peak. Does that feel right?"
  • "To keep us focused, I'm going to explicitly set aside [Z feature] as out of scope. I can circle back if we have time."

How the interviewer is evaluating you:

They're checking two things. First, can you handle ambiguity without freezing? Second, do you ask questions that actually change your design, or are you just performing? An interviewer can tell the difference between a question that matters ("Do we need to support real-time updates or is polling acceptable?") and one that's stalling ("What color should the button be?"). Every question you ask should plausibly lead to a different architectural decision.

Do this: Write your requirements on the whiteboard or shared doc as you go. When you transition to Phase 2, point at them. They become your contract for the rest of the interview.

Example: "Alright, I've got our three core requirements and our scale targets written down here. Let me sketch out a high-level architecture that supports these flows."

Phase 2: High-Level Design (Minutes 5–10)

What to do:

  1. Draw the major components for your primary use case. Client, load balancer or API gateway, application service(s), data store(s), and any async processing layer (queue, workers). That's usually 5-7 boxes. If you have more than 7, you're going too deep too early.
  2. Trace the data flow for one read path and one write path. Use arrows. Label them with what's happening ("POST /shorten", "lookup by short_code"). The interviewer should be able to look at your diagram and understand how data moves through the system without you explaining it.
  3. Name your technology choices at the category level, not the product level. Say "relational database" or "distributed cache," not "PostgreSQL with pgBouncer connection pooling configured for..." You'll get to specifics in Phase 3. Right now, you're painting with broad strokes.

What to say:

  • "Here's the happy path for a write: the client hits our API gateway, which routes to the shortening service, which generates a short code and writes it to our data store."
  • "For reads, we'll go client to gateway to a lookup service, which checks our cache first, then falls back to the database."
  • "I'm keeping this intentionally high-level. I want to make sure the overall shape makes sense before we drill into any one piece."

How the interviewer is evaluating you:

They want to see that you can think in systems, not just components. Can you articulate how pieces connect? Do your arrows make sense? They're also watching your speed. Five minutes for a high-level diagram is plenty. If you're agonizing over whether to draw one service or two at this stage, you're overthinking it.

Common mistake: Jumping into database schema or API contract details here. You'll see candidates start writing CREATE TABLE statements at minute 7. That's Phase 3 material. At this point, a box labeled "DB" with an arrow going in and an arrow coming out is exactly the right level of detail.

Example: "Okay, I've got the basic architecture on the board. Before I go deeper, I want to check in: I think the most interesting design challenges here are [the ID generation strategy] and [how we handle read-heavy traffic at scale]. Would you like me to start with one of those, or is there another area you'd prefer?"

That last sentence is your transition into Phase 3, and it's doing double duty. It shows the interviewer you can identify the hard parts of the problem, and it gives them a chance to steer you toward whatever they actually care about evaluating.


Phase 3: Deep Dives (Minutes 10–30)

This is twenty minutes. This is where interviews are won or lost.

What to do:

  1. Pick 2-3 areas to go deep on. Ideally, one is a data/storage problem, one is a system behavior problem (consistency, ordering, delivery guarantees), and one is something unique to the prompt. If the interviewer tells you where to go, follow their lead. If they say "what do you think is most interesting?", that's your cue to pick the area where you're strongest.
  2. For each deep dive, follow a three-beat structure: state your approach, name an alternative you considered, explain why you chose what you chose. This is the trade-off pattern, and it's the single highest-signal behavior in a system design interview. Saying "I'd use a relational database here" is a C answer. Saying "I considered a key-value store for the speed, but we need range queries for the analytics use case, so I'm going with a relational store and adding a read replica" is an A answer.
  3. Spend roughly 7-8 minutes per deep dive. If you're on your second deep dive and the clock says 25 minutes, you have time for one more short one. If it says 28 minutes, wrap up and move to Phase 4. Don't start a new deep dive you can't finish.

What to say:

  • "Let me dig into the ID generation strategy. There are a few options here: we could use auto-incrementing IDs, UUIDs, or a base62 encoding of a counter. Each has different trade-offs for collision risk, URL length, and predictability..."
  • "One alternative I considered was [X], which would give us [benefit], but I'm going with [Y] because in our case [specific reason tied back to requirements]."
  • "I think that covers the core of [topic]. Should I keep going here, or move to [next topic]?"

How the interviewer is evaluating you:

This is the senior/staff-level differentiator. They're listening for three things: (1) Do you understand the trade-offs, not just the happy path? (2) Can you justify your decisions with reasoning, not just preference? (3) Do you consider failure modes and edge cases within each deep dive, or only the sunny-day scenario?

A mid-level candidate describes what they'd build. A senior candidate describes what they'd build, what they chose not to build, and why.

Do this: When you finish a deep dive, physically point to the component on your high-level diagram and say what changed. "So now this box isn't just 'DB,' it's a sharded MySQL cluster with consistent hashing, and we've added a Redis cache in front of it here." This keeps your diagram evolving and shows the interviewer you're building a coherent system, not just answering disconnected questions.

Phase 4: Scale & Bottlenecks (Minutes 30–40)

What to do:

  1. Walk through your design and identify the single points of failure. Point at each component on your diagram and ask out loud: "What happens if this dies?" If the answer is "the whole system goes down," you need replication, failover, or redundancy there.
  2. Stress-test with multipliers. Take your scale numbers from Phase 1 and multiply by 10. Then 100. What breaks first? Usually it's the database, then the network layer, then whatever stateful service you have. Name the bottleneck, then describe how you'd address it (read replicas, sharding, partitioning, caching layers).
  3. Discuss at least one caching strategy and one data partitioning approach. Even if the interviewer doesn't ask, these two topics are on almost every evaluation rubric. Be specific: what's your cache eviction policy? What's your partition key? What happens on a cache miss?

What to say:

  • "Let me walk through what breaks at scale. Our biggest bottleneck is going to be [X] because [reason]. At 10x our current load, I'd address this by [specific solution]."
  • "For caching, I'd put a write-through cache here with a TTL of [duration], using [key structure]. The trade-off is we might serve stale data for up to [duration], which is acceptable given our consistency requirements from Phase 1."
  • "One thing I want to call out: if this service goes down, we lose [capability]. I'd add a secondary instance with [failover mechanism] to handle that."

How the interviewer is evaluating you:

They want to see that you can think about systems under pressure, not just systems at rest. Anyone can design something that works for 100 users. The question is whether you understand what changes at 10 million. They're also checking if you can connect your scaling decisions back to the requirements you set in Phase 1. If you said "eventual consistency is fine" earlier, and now you're adding synchronous replication everywhere, that's a contradiction they'll notice.

Key insight: You don't need to solve every scaling problem. You need to identify them and prioritize which ones to solve first. Saying "the database is our bottleneck, and I'd address it before worrying about the cache layer, because reads are 100x writes in our system" is more impressive than trying to optimize everything simultaneously.

Example: "I think we've covered the major scaling concerns. Let me take a step back and summarize the full design before we wrap up."

Phase 5: Wrap-Up (Minutes 40–45)

Five minutes. Don't skip this. Candidates who "run out of time" and never summarize are leaving points on the table.

What to do:

  1. Give a 60-second walkthrough of your final design. Start from the client, trace through the system, and hit every major component. This is your chance to show that all the pieces fit together into a coherent whole, not just a collection of deep dives.
  2. Name 2-3 trade-offs you made consciously. "I chose availability over consistency for the read path because our requirements allow for eventual consistency." "I went with a simpler single-leader replication model knowing it limits our write throughput, but it keeps the consistency model much simpler." These sentences signal engineering maturity.
  3. Mention 1-2 things you'd improve with more time. Maybe it's monitoring and alerting. Maybe it's a more sophisticated caching layer. Maybe it's handling a geographic distribution requirement you set aside earlier. This shows self-awareness and tells the interviewer you know the design isn't perfect (because no design is).

What to say:

  • "Let me do a quick end-to-end walkthrough. A request comes in from the client, hits our load balancer, routes to [service], which [does what], stores data in [store], and returns [response]. For the read path..."
  • "The biggest trade-off I made was [X]. If I had more time, I'd revisit [Y] because [reason]."
  • "One area I'd want to invest in for production is [monitoring/alerting/graceful degradation], which I didn't get to cover today."

How the interviewer is evaluating you:

They're looking for self-awareness and communication skills. Can you zoom out after 40 minutes of detailed work and articulate the big picture? Can you honestly assess your own design's weaknesses? This is the phase where the interviewer decides whether they'd want to work with you on a real project. Someone who can summarize a complex system clearly and acknowledge its limitations is someone they want on their team.

Don't do this: Don't use the wrap-up to introduce entirely new components or redesign something. If you suddenly say "actually, I'd scrap the message queue and use a different approach," you're undermining confidence in everything you said for the last 35 minutes. The wrap-up is for polishing, not pivoting.

Putting It Into Practice

The best way to internalize the framework is to watch it in action. Below is a condensed walkthrough of a "Design a URL Shortener" interview, annotated with the reasoning behind each move. Read it like a film script with director's commentary.

The Mock Interview: Design a URL Shortener

Phase 1: Requirements & Scope (Minutes 0–5)

Interviewer: Alright, let's design a URL shortening service. Something like bit.ly.

You: Great. Before I start sketching, I want to make sure I'm solving the right problem. A few quick questions. First, what's the primary use case? Are we focused on shortening URLs and redirecting users, or are there analytics features like click tracking and geographic breakdowns?

Interviewer: Good question. Let's focus on the core: shorten a URL, redirect when someone visits the short link. Analytics can be a stretch goal if we have time.

You: Got it. For scale, are we talking about a read-heavy service? I'd assume the ratio of redirects to new URL creations is something like 100:1 or higher.

Interviewer: Yeah, that's reasonable. Let's say 100 million new URLs per month, and reads are 100x that.

You: So roughly 10 billion redirects per month. That's about 4,000 reads per second on average, with spikes probably 5 to 10x that. For latency, I'll target sub-100ms for redirects since that's in the critical path of a user clicking a link. Writes can be more relaxed, maybe a few hundred milliseconds. And I'll assume we want high availability over strict consistency. A short URL that takes a second to propagate globally is fine; a redirect that fails is not.

Interviewer: Makes sense. Go ahead.

You: One more thing. I'm going to explicitly scope out: custom vanity URLs, user accounts, and the analytics dashboard. I'll mention where they'd plug in, but I won't design them unless you want me to.

Do this: Notice three things here. The candidate quantified the scale into actual numbers (requests per second), stated a latency target, and made an explicit consistency vs. availability call. These aren't random questions. They're the constraints that will drive every design decision for the next 40 minutes.

Phase 2: High-Level Design (Minutes 5–10)

You: Let me sketch the high-level flow. I see five main components. A client, which is a browser or API consumer. An API gateway or load balancer in front. A URL shortening service that handles both writes (create short URL) and reads (resolve short URL to the original). A data store for the URL mappings. And a cache layer in front of the data store, since reads dominate.

For the write path: client sends a POST with the long URL, the service generates a short key, stores the mapping, and returns the short URL. For the read path: client hits the short URL, we check the cache first, fall back to the data store, and return a 301 or 302 redirect.

That's the skeleton. I want to keep it at this level for now, and then we can decide where to go deep.

Interviewer: Why 301 vs 302? Does it matter?

You: It does. A 301 is a permanent redirect, so the browser caches it and never hits our service again for that URL. Good for our server load, bad if we ever want analytics or the ability to change the destination. A 302 is temporary, so every click comes through us. I'd default to 302 for flexibility, but this is a trade-off we could make configurable per URL.

Do this: The interviewer threw a curveball about HTTP status codes. Instead of panicking, the candidate turned it into a trade-off discussion. This is exactly the kind of thinking that scores points. If you don't know the answer to a tangent question, say so and move on. But if you do know, frame it as a trade-off, not a trivia answer.

You: So here's where we are. I've got the basic read and write paths on the board. I'd like to go deep on two areas: the key generation strategy, since that's the core algorithmic challenge, and the data store choice plus how we'd scale it. Does that sound right, or is there something else you'd rather explore?

Interviewer: Those are good. I'm also curious about how you'd handle the cache layer, so let's make sure we get to that.

You: Perfect, I'll cover all three.

Do this: This is the checkpoint technique. At the boundary between high-level design and deep dives, you pause, summarize your plan, and ask the interviewer to co-pilot. You just got three pieces of gold: confirmation that your two picks are good, plus a third topic the interviewer cares about. Now you know exactly where to spend your time.

Phase 3: Deep Dives (Minutes 10–30)

You: Starting with key generation. The short URL needs a key, let's say 7 characters using base62 (a-z, A-Z, 0-9). That gives us 62^7, which is about 3.5 trillion possible keys. Way more than enough for 100 million URLs per month, even over decades.

There are a few approaches. I could hash the long URL with MD5 or SHA-256 and take the first 7 characters. The problem is collisions. Two different long URLs could produce the same short key. I'd need a collision check on every write, which adds latency and complexity.

A better approach for our scale: pre-generate keys using a dedicated Key Generation Service. It maintains a pool of unused keys in a separate table. When the URL service needs a key, it grabs one from the pool. No collision checking needed, and the KGS can replenish the pool asynchronously.

Interviewer: What if two app servers grab the same key at the same time?

You: Good catch. The KGS would hand out keys in batches. Each app server gets, say, 1,000 keys loaded into memory. Once it uses them, it requests a new batch. The KGS marks keys as "assigned" atomically. So two servers never get the same key. If a server crashes and loses its unused keys, we waste a few hundred keys. At 3.5 trillion total, that's negligible.

Interviewer: Fine. What about the data store?

You: The mapping is simple: short_key → long_url, plus a created_at timestamp. The access pattern is almost entirely point lookups by key. No range queries, no complex joins. This screams key-value store. I'd go with DynamoDB or Cassandra. Both handle high-throughput point reads well and scale horizontally.

If the team is more comfortable with relational databases, a sharded MySQL or PostgreSQL setup would work too. We'd shard by the short key's hash. But we don't get much benefit from the relational model here, so I'd lean NoSQL.

For the cache, I'd put Redis in front of the data store. With 10 billion reads per month and a power-law distribution (some URLs are way more popular than others), even a modest cache with an LRU eviction policy should give us a 90%+ hit rate. Cache entries are tiny, just a key-value pair, so we can fit billions of them in a reasonable Redis cluster.

Interviewer: What happens if the cache goes down?

You: Reads fall through to the data store. Latency increases, but the system stays available. We'd see a spike in database load, so I'd want the data store provisioned to handle the full read load temporarily, even if we normally rely on the cache for most of it. Or we could have a standby Redis replica that promotes automatically.

Don't do this: Some candidates would spend this entire 20-minute window on just the key generation algorithm, whiteboarding every hash function variant and probability calculation. That's a trap. The candidate here spent about 7 minutes on key generation, 7 on the data store, and 6 on caching. Three topics, each with a clear decision and trade-off discussion. That's the breadth-plus-depth formula.

Phase 4: Scale & Bottlenecks (Minutes 30–40)

You: Let me think about what breaks at 10x and 100x our current numbers. At 40,000 reads per second, a single Redis instance might struggle. I'd partition the cache by key hash across multiple Redis nodes. Same for the data store. Cassandra handles this natively with its consistent hashing ring. If we went with MySQL, we'd need an explicit sharding layer.

The Key Generation Service is a potential single point of failure. If it goes down, we can't create new short URLs. I'd run it with a primary and standby, and each app server's local key buffer gives us a few minutes of runway even if the KGS is temporarily unreachable.

For geographic distribution, since redirects are latency-sensitive, I'd put read replicas and cache nodes in multiple regions. Writes can route to a single primary region. The short URL creation latency is less critical than redirect latency.

Interviewer: What about hot keys? What if one URL goes viral?

You: Classic problem. A single cache shard holding a viral URL's key gets hammered. I'd handle this with local in-memory caching on each app server for the hottest keys, basically an L1 cache in front of Redis. We could detect hot keys by tracking access frequency and promoting them. Alternatively, replicate hot keys across multiple Redis shards so the load spreads.

Phase 5: Wrap-Up (Minutes 40–45)

You: Let me summarize. We've got a URL shortening service that handles 100 million new URLs per month and 10 billion redirects. Short keys are pre-generated by a dedicated KGS to avoid collisions. Mappings live in a key-value store like Cassandra, with a Redis cache layer handling the read-heavy workload. Redirects use 302 to preserve flexibility for future analytics.

The main trade-offs I made: I chose pre-generated keys over hashing for simplicity and collision avoidance, at the cost of an extra service to manage. I chose eventual consistency over strong consistency, which means a newly created URL might not resolve for a brief window in non-primary regions. And I chose a NoSQL store over relational, trading query flexibility for horizontal scalability.

If I had more time, I'd design the analytics pipeline (click tracking via an async event stream into something like Kafka), and I'd think more carefully about abuse prevention, like rate limiting URL creation to prevent someone from exhausting our key space.

Interviewer: Great, that's a solid design. Let's move to questions.

Do this: The wrap-up took about 90 seconds. It covered three things: what was built, what trade-offs were made consciously, and what would come next. This signals that you can zoom out and evaluate your own work. Many interviewers explicitly note whether a candidate can self-critique.

Phase Checklist: What You Should Have Produced

After each phase, glance at your whiteboard (or shared doc). If you're missing the artifact listed below, you've either gone too shallow or spent time on the wrong thing.

PhaseTimeArtifact on the Board
Requirements & Scope0–5 minA short list: 2–3 functional requirements, 2–3 non-functional requirements with numbers (QPS, latency), and a "not building" list
High-Level Design5–10 min5–7 boxes with arrows showing the primary read and write paths, labeled clearly
Deep Dives10–30 minFor each of 2–3 topics: the approach you chose, one alternative you rejected, and why
Scale & Bottlenecks30–40 minAnnotations on your diagram showing where you'd shard, cache, replicate, or add redundancy
Wrap-Up40–45 minNothing new on the board. This is verbal: a 60-second summary, trade-offs, and future improvements

The Checkpoint Technique

You saw it in the dialogue above, but let's make it explicit. At two moments in the interview, you should pause and hand the steering wheel to the interviewer:

Checkpoint 1 (around minute 10): "I've got the high-level design on the board. I'm thinking of going deep on [X] and [Y]. Does that align with what you'd like to explore?"

Checkpoint 2 (around minute 30): "We've covered [X], [Y], and [Z] in depth. I'd like to shift to scaling and failure modes now. Anything else you want to dig into first?"

These checkpoints do two things. They prevent you from spending 15 minutes on a topic the interviewer doesn't care about. And they show that you can manage a technical conversation, which is a signal interviewers look for at senior levels and above.

If the interviewer redirects you ("Actually, I'd love to hear about how you'd handle consistency here"), that's not a failure. That's the system working. You just avoided wasting ten minutes on the wrong deep dive.

Which Deep Dives Score Points? A Cheat Sheet

Different problems reward different areas of depth. Here's a quick reference for some of the most common prompts. If you're not sure where to go deep, start with the first topic listed.

Interview PromptHigh-Value Deep DivesLower Priority (unless asked)
URL ShortenerKey generation strategy, data store scaling, cachingAnalytics pipeline, UI design
Design Twitter / News FeedFan-out strategy (push vs. pull), feed ranking, timeline cachingTweet storage schema, user auth
Chat System (WhatsApp)Message delivery guarantees, presence/online status, WebSocket connection managementMessage search, media storage
Rate LimiterAlgorithm choice (token bucket vs. sliding window), distributed counting, race conditionsDashboard UI, alerting
Notification SystemDelivery prioritization, retry/backoff strategy, cross-channel deduplicationTemplate rendering, user preferences schema
Design YouTubeVideo upload/transcoding pipeline, CDN strategy, recommendation systemComment system, user profiles

Notice a pattern: the deep dives that score points are almost never about the database schema or the API endpoint definitions. Those are table stakes. The differentiators are the distributed systems challenges unique to each problem.

Do this: Before your interview, spend 2 minutes identifying which prompt category your company tends to ask (check Glassdoor, Blind, or ask your recruiter). Then review the high-value deep dives for that category. Even if you get a different question, the muscle memory of knowing where depth matters will transfer.

Common Mistakes

You'll notice a pattern here: almost none of these are about getting a technical fact wrong. They're about time. Every mistake on this list is a pacing failure disguised as something else.

The Requirements Rabbit Hole

It sounds like this: "But what if the user is on a mobile device with intermittent connectivity and they're trying to shorten a URL that's already been shortened by another user who has a different permission level?"

That's minute 11. There's nothing on the whiteboard yet.

Interviewers don't penalize you for asking clarifying questions. They penalize you for using questions as a shield against committing to a design. There's a difference between "What's the expected read-to-write ratio?" (useful, takes 10 seconds to answer) and a sprawling interrogation about every possible edge case. The second one signals that you can't operate under ambiguity, which is the exact opposite of what a senior engineer should demonstrate.

Don't do this: Asking 15+ clarifying questions before putting pen to whiteboard. If your requirements phase stretches past 6 minutes, you're stalling.

Do this: Ask 4-6 targeted questions, state your assumptions for anything unclear, and start drawing. You can always revisit assumptions later.

The fix: Set a hard mental limit of 5 minutes for requirements, then say "I'm going to make some assumptions and we can adjust as we go."

The Schema Trap

You're designing a notification system. It's minute 7. And you're writing this on the whiteboard:

notifications_table:
  id UUID PRIMARY KEY
  user_id UUID NOT NULL
  type VARCHAR(50)
  payload JSONB
  read_at TIMESTAMP
  created_at TIMESTAMP
  ...

Meanwhile, you haven't drawn a single service box, haven't discussed whether notifications are push or pull, haven't mentioned whether you need real-time delivery or batch processing.

This is one of the most common traps because it feels productive. You're writing concrete, technical things. But the interviewer is watching you spend your most valuable minutes on something that belongs inside a deep dive, not as your opening move. Column names don't demonstrate system-level thinking. They demonstrate that you're comfortable with SQL.

Don't do this: Jumping into table schemas, index definitions, or data models before you've established the high-level component architecture and primary data flow.

The fix: During the high-level phase, just write "PostgreSQL" or "User DB" inside a box and move on. Save the schema for when (or if) the interviewer asks you to go deep on data modeling.

Skipping the Wrap-Up

"Oh, looks like we're out of time!"

That's you, at minute 44, mid-sentence about consistent hashing, realizing you never talked about failure modes, monitoring, or what you'd change. The interviewer smiles politely and says thanks. You walk out feeling like you covered a lot of ground. You didn't.

The last 3-5 minutes are the easiest points in the entire interview. A 60-second summary that says "Here's what we built, here's the trade-off I'm least comfortable with, and here's what I'd tackle next with more time" tells the interviewer you can zoom out, prioritize, and self-evaluate. Those are leadership signals. Skipping them because you "ran out of time" is like leaving the last page of an exam blank.

Key insight: An incomplete design with a thoughtful wrap-up scores higher than a more complete design that just... stops. Interviewers remember how you finish.

The fix: Set a mental alarm at minute 38. Whatever you're discussing, start wrapping it up. The summary is non-negotiable.

The Single-Topic Tunnel

You really, really know how Kafka works. So when you're designing a chat system, you spend 20 minutes on message queue partitioning, consumer groups, exactly-once delivery semantics, and offset management. It's impressive depth.

But you never discussed how messages get stored long-term. You didn't mention how presence (online/offline status) works. You skipped read receipts entirely.

Here's the problem: interviewers typically evaluate you across 4-6 dimensions (API design, data modeling, scalability, reliability, trade-off analysis, etc.). If you only go deep on one area, you can only score in one area. It doesn't matter how brilliant your Kafka deep dive was. The interviewer literally has empty boxes on their scorecard for the other dimensions.

Don't do this: Spending more than 10 minutes on any single deep-dive topic unless the interviewer is actively asking follow-up questions and pulling you deeper.

Do this: Pick 2-3 deep-dive topics and spend 7-8 minutes on each. Breadth plus selective depth is the formula that gets "strong hire" ratings.

The fix: After 8 minutes on any one topic, pause and say "I could go deeper here, but I want to make sure we also cover X. Which would you prefer?"

Ignoring Interviewer Signals

The interviewer says: "Yeah, that makes sense. So what about..."

You say: "Right, and also I should mention that the load balancer could use round-robin OR least-connections, and the difference is that with least-connections you get better distribution when request durations vary, and actually there's also a weighted variant where..."

They already moved on. You didn't.

When an interviewer says "that's fine," "makes sense," "let's move on," or "sure, what about X instead," they are giving you a gift. They're telling you that you've earned the points for this topic and your time is better spent elsewhere. Candidates who keep explaining after these cues aren't demonstrating thoroughness. They're demonstrating that they can't read a room, and they're burning minutes they'll desperately need later.

This one stings because it often comes from nervousness. You prepared a great explanation and you want to deliver all of it. But the interview is a conversation, not a presentation.

The fix: Treat every interviewer interjection as a redirect. Stop talking, listen to what they're actually asking, and go there instead.

The Premature Optimization Spiral

Minute 8. You've barely sketched out three boxes. And you're already talking about sharding your database.

"So we'll need to shard the user table by user_id, and we should probably use consistent hashing for the shard key distribution, and we'll want read replicas in each region..."

You're solving scaling problems for a system you haven't designed yet. The interviewer doesn't even know what your write path looks like, and you're already partitioning data across regions.

This happens because candidates know that scaling discussions score points. They do. But only when they come after a clear baseline design. Jumping to optimization before establishing the simple version tells the interviewer you can't distinguish between a system that serves 1,000 users and one that serves 100 million. That distinction is the whole point of the scaling phase.

Common mistake: Introducing caching, sharding, CDNs, or replication before you have a working design for a single user on a single server. Optimization without a baseline is just hand-waving.

The fix: Design for one server first. Get the data flow right. Then, in the scaling phase (minutes 30-40), systematically ask "what breaks at 10x?" and add complexity only where it's needed.

Quick Reference

Print this page. Screenshot it on your phone. Whatever works. This is the entire framework compressed into something you can scan in the elevator on the way up to the interview.

The 45-Minute Framework at a Glance

PhaseTimeGoalYou're Done When You Have...
Requirements & Scope0:00–5:00Lock down what you're building and what you're notA short list of functional requirements, 2–3 non-functional constraints (scale, latency, consistency), and at least one explicit non-goal stated out loud
High-Level Design5:00–10:00Sketch the system's skeleton and primary data flow5–7 boxes on the board with arrows showing the read path and write path for your core use case
Deep Dives10:00–30:00Show senior-level thinking on 2–3 selected areasTrade-off discussions with alternatives you rejected and reasons why, for each area
Scale & Bottlenecks30:00–40:00Stress-test your design at 10x and 100xIdentified single points of failure, added caching/partitioning/replication where needed, discussed at least one failure scenario
Wrap-Up40:00–45:00Summarize and show self-awarenessA 60-second verbal walkthrough of your design, plus 1–2 things you'd improve given more time

Phrases to Use

Keep these in your back pocket. They sound natural, they signal structure, and they buy you control over the conversation.

  1. To transition out of requirements: "I think I have enough to start sketching. Let me draw the high-level flow, and if I've missed something we can course-correct."
  2. To checkpoint at minute 10: "So here's the overall shape. I'd like to go deep on [X] and [Y] next. Does that match what you'd find most interesting?"
  3. To checkpoint at minute 30: "We've covered [X] and [Y] in depth. I want to make sure we have time to talk about scaling and failure modes. Should I move there now?"
  4. To handle "I don't know": "I haven't worked with that directly, but my instinct is [best guess and reasoning]. I'd want to validate that assumption before committing to it in production."
  5. To recover when you're stuck: "Let me think about what the constraints are pushing us toward. We need [requirement], which means [consequence], so I'd lean toward [option]."
  6. To close the interview: "To summarize: we built [system] with [key architectural choices]. The main trade-off I made was [X over Y] because [reason]. Given more time, I'd want to revisit [gap]."

Red Flags You're Off Track

These are your real-time alarm bells. If any of these are true, stop what you're doing and course-correct immediately.

  • Minute 8, no boxes on the board. You're stuck in requirements. Say "let me sketch this out" and start drawing.
  • Minute 15, still on your first component. You've gone deep too early. Zoom out, finish the high-level picture, then come back.
  • Minute 25, only one deep dive completed. You need breadth. Wrap your current topic in 2 minutes and pick a second area.
  • Minute 35, you haven't mentioned failure modes or scale. Transition now. Even a quick "here's what breaks at 100x" is better than nothing.
  • The interviewer says "that's fine" or "let's move on" and you keep talking. Stop. They're giving you a gift. Take it.

Your 2-Minute Pre-Interview Ritual

Right before you walk in (or join the video call), do exactly this:

  1. Glance at the phase table above. Burn the time boundaries into your head: 5, 10, 30, 40.
  2. Pick one checkpoint you will absolutely do no matter what. The 10-minute checkpoint is the highest-leverage one. Commit to pausing at minute 10 and asking the interviewer where to go deep.
  3. Remind yourself: the goal is not to design a perfect system. The goal is to show your thinking across multiple evaluation areas. Breadth plus selective depth.

That's it. Three things to remember. The framework handles the rest.

Key takeaway: You don't fail system design interviews because you lack knowledge; you fail because you spend your time in the wrong places. Memorize the phase boundaries, do at least one checkpoint, and you'll outpace most candidates before you even get to the hard technical questions.
Dan Lee's profile image

Written by

Dan Lee

Data & AI Lead

Dan is a seasoned data scientist and ML coach with 10+ years of experience at Google, PayPal, and startups. He has helped candidates land top-paying roles and offers personalized guidance to accelerate your data career.

Connect on LinkedIn