The first 10 minutes of a system design interview

Most system design rounds are won or lost before the first box is drawn. A minute-by-minute plan for requirements, estimates and the API.

Dev RamanEngineering Lead, Zustly 2 min read
Two people sketching an architecture diagram on a whiteboard

System design interviews feel open-ended, which is exactly why a structure helps. Interviewers consistently tell me the same thing: the candidates who impress them are the ones who slow down at the start.

Here's how I'd spend the first ten minutes of a 45-minute round.

Minutes 0–3: functional requirements

Ask what the system must do, and get agreement on a short list. For a URL shortener:

  • Create a short link from a long URL
  • Redirect a short link to the original
  • Optional: custom aliases, expiry, click analytics

Then explicitly park the optional ones: "I'll design for the first two and leave hooks for analytics." Scoping is a senior skill.

Minutes 3–5: non-functional requirements

This is where the design actually comes from. Ask about:

  • Scale — writes per second, reads per second
  • Latency — is a redirect allowed to take 200 ms?
  • Availability vs consistency — is a stale redirect acceptable for a few seconds?
  • Durability — can we ever lose a link?

Minutes 5–7: back-of-the-envelope estimates

Keep it rough and fast. The goal is to discover which part of the system is hard.

  • 10k writes/sec → ~860M new links a day
  • 100:1 reads → ~1M redirects/sec at peak
  • ~500 bytes per record → ~430 GB a day before replication

Now you know: reads dominate, storage grows fast, and caching is going to matter more than anything else.

Minutes 7–10: the API and data model

Write the contract before the boxes:

text
POST /shorten   { url, alias?, ttl? }  ->  { code }
GET  /:code                             ->  301 Location: <url>

And the core record: code, url, created_at, expires_at, owner_id. Two minutes here makes every later component easier to justify.

Then, and only then, draw

With requirements, numbers and an API agreed, the high-level design almost draws itself: a stateless app tier, a key-value store partitioned by code, a cache in front for hot links, and an async pipeline for analytics.

The one-line summary

The interviewer isn't looking for the "right" architecture. They're looking for someone who asks good questions, makes reasonable assumptions, and can explain every box on the board. The first ten minutes is where you prove it.

#System design#Architecture#Senior
Share
Written by

Dev Raman

Engineering Lead, Zustly

Dev has sat on both sides of hundreds of coding and system design loops. He builds the parts of Zustly that read your screen.