The System Design Interview Framework
Walk through the five-step RADIO framework (Requirements, API, Data, Infrastructure, Optimise) and practise applying it to a URL shortener.
Why System Design Matters in Interviews
System design interviews test your ability to think at scale — how would you design Twitter, YouTube, or a URL shortener for billions of users? Unlike coding problems with a single correct answer, system design is open-ended: you must make and justify trade-offs. Senior and staff-level roles devote 30–45 minutes to this round exclusively.
Interviewers evaluate whether you can clarify requirements, estimate load, propose a high-level architecture, dive into key components, and discuss trade-offs — all while communicating clearly. A structured framework prevents you from rambling and ensures you cover all critical dimensions.
# System design is not about a single correct answer.
# Interviewers look for:
eval_criteria = [
'Ability to clarify requirements before designing',
'Back-of-envelope capacity estimation',
'High-level architecture with clear components',
'Data modelling and storage choice',
'Handling scalability (10x, 100x load)',
'Trade-off discussion (consistency vs availability, etc.)',
'Communication: talking through decisions as you make them',
]
for c in eval_criteria:
print('-', c)The RADIO Framework Overview
The RADIO framework provides a repeatable 5-step structure for any system design interview:
- R — Requirements: functional and non-functional
- A — API design: what operations does the system expose?
- D — Data model: what data is stored and how?
- I — Infrastructure: high-level components (servers, queues, caches)
- O — Optimise: bottlenecks, caching, sharding, replication
Always move through these steps in order, but return and refine earlier steps when new insights emerge. Spend roughly equal time on each phase. Never jump straight to drawing boxes without first clarifying requirements.
RADIO = {
'R': 'Requirements — What must the system do? What scale?',
'A': 'API — Define endpoints/operations the system exposes',
'D': 'Data Model — Entities, schemas, storage types',
'I': 'Infra — High-level architecture: servers, queues, caches, CDN',
'O': 'Optimise — Identify and address bottlenecks, trade-offs',
}
for step, desc in RADIO.items():
print(f'[{step}] {desc}')
print('\nTiming guide for a 45-min interview:')
print(' R: 5 min | A: 5 min | D: 10 min | I: 15 min | O: 10 min')All lessons in this course
- The System Design Interview Framework
- Scalable Data Storage: SQL vs NoSQL
- Caching, CDNs, and Load Balancing
- Design Rate Limiter and Design Twitter Feed