system-design

How to Practice System Design

Reading this repo will make you understand system design. Only practice will make you good at the interview. This chapter is the meta-guide: how to turn knowledge into fluency, why active recall beats re-reading, and a concrete study plan you can start today.

Prerequisites: The Framework, Case Studies Time to read: ~14 minutes


The uncomfortable truth

🚨 You cannot learn system design by reading, any more than you can learn to swim by reading. Watching someone design Twitter feels like learning; it isn’t. The interview asks you to produce a design under time pressure while thinking out loud — a performance skill. Performance skills are built by doing the thing, getting feedback, and doing it again.

The single biggest mistake candidates make is passive consumption — reading case studies, watching videos, nodding along — and mistaking recognition (“yeah, I’ve seen fan-out”) for the ability to generate the answer from scratch when the clock is running. 🚨 Recognition ≠ recall ≠ performance. Close the gap deliberately.


The practice loop

For every topic or problem, run this loop:

flowchart LR
    A[Attempt cold<br/>no notes, timed] --> B[Compare to a<br/>reference answer]
    B --> C[Identify the gap<br/>what did I miss?]
    C --> D[Study just that gap]
    D --> E[Redo later<br/>from scratch]
    E --> A
  1. Attempt cold. Before reading the write-up, design it yourself — 45 minutes, out loud, on a whiteboard. This is uncomfortable and that discomfort is the learning.
  2. Compare to the reference (the case study, a mock partner, a rubric).
  3. Find the gap — the deep dive you skipped, the trade-off you couldn’t name, the estimation you fudged.
  4. Study the gap specifically — go read that one building block.
  5. Redo from scratch a few days later. If you can re-derive it, you’ve learned it. If you’re recalling the write-up, you haven’t.

🚨 The gap between your cold attempt and the reference is your entire study list. Everything else is noise.


Active recall & spaced repetition

Two learning-science principles do the heavy lifting:

Keep a simple log: problem, date attempted, what you missed, date to redo. A spreadsheet is enough.


Practice out loud

🚨 The interview is a spoken performance — practice speaking, not just thinking. Silent whiteboarding in your head skips the hardest part: narrating your reasoning clearly while designing. Record yourself, or better, practice with a partner. You’ll discover that things clear in your head come out as mush the first time you say them. That’s exactly the skill the interview tests, so build it directly.


The four kinds of drills

Practice decomposes into skills you can drill separately before combining them in a full mock:

  1. Estimation drills — back-of-envelope math until numbers are instant.
  2. Component drills — “when and why would you use X?” for every building block.
  3. Trade-off drills — articulate the trade-off for any decision, in trade-off vocabulary.
  4. Full mocks — a complete 45-minute design, ideally with a partner.

🚨 Isolate weaknesses. If your estimation is shaky, drill just estimation for a week — don’t hide it inside full mocks. Musicians practice scales separately from pieces; do the same.


A concrete study plan

Pick the track that matches your timeline (see ROADMAP for the full version):

If you have 2 weeks (crunch)

Ongoing (career-long)


Measuring progress

You’re improving when:

Grade yourself honestly with the self-grading checklist.


🚨 Common practice mistakes


🛠️ Start now

1. Do a cold attempt today. Pick URL Shortener, set a 45-minute timer, and design it out loud before reading it. Note every gap. That’s your first study list.

2. Set up a practice log. A spreadsheet: problem, date, what I missed, redo date. Fill in row one from step 1.

3. Schedule your redos. Put the 1-day / 3-day / 1-week redos in your calendar now, or they won’t happen.


Further reading