Estimation in the Interview
How to do back-of-the-envelope math under pressure, out loud, without a calculator — and how to
use the numbers to drive the design rather than just producing them.
Prerequisites: Back-of-the-Envelope Estimation, The Framework
Time to read: ~14 minutes
Why estimation scores so well
🚨 Doing quick, sound estimation is one of the clearest signals of an experienced engineer, because
it separates people who reason about scale from those who guess. And it’s the phase where your answer
becomes justified: “we need a cache” is an opinion; “450,000 reads/second, so no single database
serves that — we need a cache” is a derived conclusion.
The full technique is in Back-of-the-Envelope Estimation;
this chapter is about doing it in the interview — fast, out loud, and connected to the design.
The rules for doing it under pressure
🚨 Five rules that make estimation work in a high-pressure setting:
1. Round aggressively. You want the order of magnitude, not precision. 86,400 → 100,000. Nobody
challenges rounding; everyone appreciates speed. 🚨 Anyone doing long division on a whiteboard has
misunderstood the exercise.
2. State every assumption out loud. “I’ll assume 100M daily active users, each posting twice a day.”
This lets the interviewer correct you (making the rest valid) and shows your reasoning.
3. Narrate the arithmetic. Estimation is graded on the reasoning, which the interviewer can only
see if you say it. A silent calculation, even if correct, scores nothing.
4. Use powers of ten. Convert to scientific notation; arithmetic becomes adding exponents.
5. Carry units. requests/second, bytes/day, GB. Unit errors are the only errors that matter,
and units catch them.
The numbers to have memorized
🚨 You must know these cold — you can’t derive them mid-interview:
Seconds/day ≈ 100,000 (86,400) ← THE most important approximation
1 million/day ≈ 12 QPS
1 billion/day ≈ 12,000 QPS
Peak = 2-3× average (consumer), up to 100× (event-driven)
Sizes: tweet ~300B, photo ~2MB, 1min 1080p ~50MB
Latency: RAM 100ns, SSD 100µs, datacenter RTT 0.5ms, cross-continent 150ms
Throughput: 1 Gbps ≈ 125 MB/s
Replication: raw × 3 × ~1.2 index overhead ≈ 3.6×
→ Latency Numbers. The 86,400 ≈ 10⁵ approximation is the
single most useful one — it turns any daily figure into QPS in your head.
The recipe (in the interview)
1. USERS → DAU, actions per user per day
2. QPS → average (÷ 100,000), then peak (× 2-3)
3. STORAGE → bytes/item × items/day × retention × 3.6 (replication+index)
4. BANDWIDTH → QPS × payload size
5. MEMORY → hot fraction (80/20) for cache sizing
Do the ones that matter for the problem — usually QPS and storage — and skip the rest unless relevant.
🚨 The crucial part: USE the numbers
🚨 The point of estimation is not the arithmetic — it’s the architectural conclusion. Every estimate
should end with “…which means…”:
- “3,000 writes/second — manageable, a sharded database handles it.”
- “450,000 reads/second — no single database serves that, so caching and precomputation are
structural, not optional.”
- “550 TB over 5 years — that requires sharding.”
- “Media is 60 TB/day, 200× the text — object storage and a CDN, direct upload, not through the app
servers.”
- “Peak is 100× average for this flash sale — we need queues and load shedding, not just more
servers.”
🎙️ The strong pattern: “[number] [operation]/second, which means [design implication].” This is
what makes estimation valuable — it derives the architecture from the numbers, which is exactly the
reasoning-not-reciting behaviour that scores.
A candidate who computes 450,000 QPS and moves on has wasted the estimate. One who says “so caching is
structural here” has used it.
Worked example (compressed)
“Let me size Twitter. I’ll assume 300M monthly users, half daily active — 150M DAU. Each posts twice a
day, so 300M tweets/day, which is 300M over 100,000 seconds ≈ 3,000 writes/second, peak maybe 9,000.
Each reads 100 tweets a day, so 15 billion reads/day ≈ 150,000 reads/second, peak ~450,000.
So the read/write ratio is 50:1 — this is read-heavy, and 450,000 reads/second means the database
can’t serve reads directly, so I’ll cache and precompute feeds.
Storage: 300M tweets/day at ~1KB is 300 GB/day, ~110 TB/year, so ~550 TB over 5 years with retention —
that needs sharding. Media, if 10% have a 2MB photo, is 60 TB/day — 200× the text, so that goes to
object storage behind a CDN, uploaded directly, not through our servers.
So the design is: read-optimized with heavy caching and precomputed feeds, sharded metadata, media in
object storage and CDN.”
🚨 Notice how each number produces a design decision. That’s the whole skill.
Time management
🚨 Budget 3-5 minutes. Don’t over-estimate. Estimation is a tool, not the deliverable — a common
mistake is spending 15 minutes on elaborate arithmetic and running out of time for the design. Do the
1-2 estimates that drive the key decisions (usually QPS and storage), state the implications, and move
on.
🚨 Interview traps
- Silent arithmetic — narrate it, or it scores nothing.
- Not stating assumptions — makes the estimate unverifiable.
- False precision — rounding aggressively is correct.
- Estimating but not using the result — the biggest waste; always say “which means…”.
- Forgetting peak — designing for average means being down every evening.
- Spending too long — 3-5 minutes, then move on.
- Not knowing the memorized numbers — you can’t derive
86,400 mid-interview.
🎙️ Soundbites
- “Let me size this before designing — the numbers tell us whether it’s a one-server problem or a
hundred-server problem.”
- “I’ll assume 150M daily actives, posting twice and reading a hundred tweets a day — does that sound
right?”
- “That’s about 450,000 reads per second at peak, which means no single database serves that — caching
and precomputation are structural here, not optimizations.”
- “Media is roughly 200 times the text data, so those are separate problems — object storage and a CDN
for media, sharded database for metadata.”
- “550 TB over five years — that requires sharding, so I’ll need to pick a shard key and discuss
cross-shard queries.”
🛠️ Try it
1. Estimate ten systems out loud, timed. For ten prompts (WhatsApp, Uber, YouTube), do the QPS and
storage estimate out loud in under 5 minutes each, ending each with the design implication. Check
against Estimation Drills. The out-loud, timed practice is
what builds the under-pressure skill.
2. Drill the memorized numbers. Flashcards for 86,400 ≈ 10⁵, 1M/day ≈ 12 QPS, the latency table,
object sizes. Five minutes a day for a week — you must know these without thinking.
3. Force the “which means” every time. For every number you compute, immediately state the
architectural implication. Until this is automatic, you’ll produce numbers without using them — the
biggest estimation mistake.
4. Practice rounding. Take real figures (347.2, 86,400, 8.3M) and round them to powers of ten
instantly. Speed at rounding is what lets you estimate in your head under pressure.
Check yourself
1. Why is the estimate's *conclusion* more important than the arithmetic?
Because the purpose of estimation in a design interview isn't to demonstrate arithmetic — it's to
*derive the architecture from the scale*, turning design decisions from opinions into justified
conclusions. Computing "450,000 reads per second" and moving on wastes the estimate; the value is in the
next sentence: "which means no single database can serve that, so caching and precomputation are
structural, not optional." That conclusion is what the estimate is *for* — it establishes *why* the
design needs a cache, why it needs sharding, why media goes to object storage. Each number should
produce a design implication ("3,000 writes/second → a sharded database handles it," "550 TB → sharding
required," "media is 200× the text → object storage and CDN"). This is the reasoning-not-reciting
behaviour that scores highest: a candidate who says "we'll use a cache" states an opinion, while one who
says "at 450,000 reads/second the database can't serve reads directly, so caching is structural" has
*reasoned* to the cache from the scale. The arithmetic is just the means; the architectural conclusion is
the end, and skipping straight to it (or producing the number and forgetting to draw the conclusion) is
the most common way candidates waste an otherwise-correct estimate.
2. Why must you narrate the arithmetic and state assumptions out loud?
Because estimation is graded on the *reasoning process*, and the interviewer can only evaluate what they
can hear. A silent calculation — even one that arrives at the exactly correct number — demonstrates
nothing about how you got there, whether you understand what the number means, or whether your
assumptions were sound; it just produces a figure that could have been guessed or memorized. Narrating
("300M tweets a day, over 100,000 seconds, is about 3,000 writes per second") shows the interviewer your
method, your fluency with the approximations, and your ability to reason about scale — which is the skill
being tested. Stating assumptions out loud ("I'll assume 150M daily actives, each posting twice a day")
serves a second critical function: it lets the interviewer *correct* you if an assumption is wrong,
which makes everything downstream valid rather than building an elaborate estimate on a bad premise —
and a stated, correctable assumption is far better than a silent, unverifiable one. It also signals that
you know estimation is about *reasonable assumptions plus sound arithmetic*, not about knowing the "real"
numbers, which you couldn't anyway. The combination — narrated arithmetic plus explicit assumptions —
turns estimation from an opaque calculation into a visible demonstration of the exact judgment the
interview is probing.
3. What are the most important numbers to have memorized, and why?
The single most important is **86,400 seconds per day ≈ 100,000 (10⁵)**, because it lets you convert any
daily figure into QPS instantly in your head: a million requests per day is 10⁶/10⁵ = ~12 QPS, a billion
per day is ~12,000 QPS — arithmetic you can do while talking, without a calculator. Beyond that: the
**peak multiplier** (2-3× average for consumer apps, up to 100× for event-driven spikes), because
designing for average means being overloaded every peak; **object sizes** (a tweet ~300 bytes, a photo
~2MB, a minute of 1080p video ~50MB), for storage and bandwidth estimates; the **latency numbers** (RAM
~100ns, SSD ~100µs, datacenter round trip ~0.5ms, cross-continent ~150ms) and **throughput** (1 Gbps ≈
125 MB/s), for reasoning about performance and capacity; and the **replication multiplier** (~3.6× raw,
combining 3× replication and ~1.2× index overhead) for realistic storage sizing. You must have these
*memorized* because you can't derive them mid-interview — you can't work out that a day has 86,400
seconds and round it while also reasoning about the design; the memorized approximations are the
building blocks that let the estimation happen fluently at conversational speed. Drilling them with
flashcards until they're automatic is a high-return, low-effort preparation, because every estimation
question depends on them.
4. Why is aggressive rounding correct rather than sloppy?
Because back-of-the-envelope estimation seeks the *order of magnitude* — is this 10 servers or 1,000?
100 GB or 100 TB? — not a precise figure, and the design decisions it drives depend only on the order of
magnitude, not the exact number. Whether the answer is 3,000 or 3,200 writes per second doesn't change
the conclusion ("a sharded database handles it"); whether it's 3,000 or 300,000 does. So rounding
86,400 to 100,000, 365 to 400, and 8 bytes to 10 sacrifices nothing that matters while making the
arithmetic doable in your head at speed — which is the whole point, since you're estimating out loud
under time pressure without a calculator. Aggressive rounding is *correct technique*, not corner-cutting:
it reflects understanding that precision is irrelevant to the exercise and that speed and clear reasoning
are what count. The opposite — doing long division on a whiteboard to get 3,187.4 writes per second —
signals that you've misunderstood the exercise, wasting time on precision that doesn't affect any
decision and that nobody expects or wants. Interviewers appreciate a candidate who rounds fluently and
reaches the architectural conclusion quickly far more than one who grinds through exact arithmetic. The
skill being demonstrated is *sizing*, and sizing is an order-of-magnitude activity.
5. How long should estimation take, and why not longer?
About 3-5 minutes of the 45-minute round — enough to do the one or two estimates that drive the key
architectural decisions (usually peak QPS and storage volume) and state their implications, but not
more. It shouldn't take longer because estimation is a *tool*, not the deliverable: its job is to
establish the scale so the design is grounded, and once you've derived the decisions it points to
("read-heavy, so cache and precompute; 550 TB, so shard; media dominates, so object storage and CDN"),
further estimation adds nothing and consumes time you need for the design and deep dives — where
seniority is actually demonstrated. A common failure is treating estimation as an end in itself,
producing elaborate multi-step calculations for every dimension (bandwidth, memory, CPU, connection
counts) when only QPS and storage actually changed a decision, and then running short on time for the
architecture. The discipline is to estimate *selectively* — do the calculations that matter for *this*
problem, skip the ones that don't, round aggressively for speed, extract the design implications, and
move on. Just as spending too long on requirements leaves no time to design, spending too long on
estimation leaves no time to demonstrate the depth the interview is really evaluating. The estimate sets
up the design; it isn't the performance.
Further reading