📋 System design framework
Four steps: lock functional and non-functional requirements, shape the design, deep dive trade-offs, then validate against the bar you set.
Typical flow: ~45 min
4-Step Process Timeline
Step 1: Elicit functional and non-functional requirements
Recommended Time: 3-10 min
Stay in problem space. Separate what the system must do (functional requirements: actors, use cases, data written/read) from how well it must do it (non-functional requirements: availability, p99 latency, throughput, durability, consistency, security, cost, compliance). Get rough numbers: QPS, growth, SLOs, and failure tolerance.
What To Do
List FRs: user actions, API shapes, and consistency expectations per operation.
List NFRs: targets for latency, availability, RPO/RTO, cost ceiling, and regulatory constraints.
State assumptions and ask the interviewer to confirm or correct them.
Estimate read/write ratio, peak QPS, and data size to ground later capacity math.
Red Flags (Don't)
Drawing a diagram before the requirement set is agreed.
Treating “scalable” or “fast” as requirements without numbers.
Hiding implicit assumptions (single region, trusted clients, strong consistency everywhere).