System Design

System design interviews can be intimidating, especially when you are asked to architect a system that can handle millions of users. The key to success isn’t memorizing specific technologies or architectures — it’s following a structured approach that demonstrates your ability to think systematically about complex problems.

After conducting hundreds of system design interviews and helping engineers land roles at top tech companies, I’ve distilled the process into a repeatable framework that works every time.

Why System design interviews matter?

System design interviews evaluate your ability to:

  • Think at scale and understand trade-offs
  • Break down complex problems into manageable components
  • Communicate technical concepts clearly
  • Design systems that are reliable, scalable, and maintainable

Unlike coding interviews, there’s no single “correct” answer. Interviewers want to see your thought process and how you handle ambiguity.

The 7-Step framework for System design success

Step 1: Clarify requirements and scope (5–10 minutes)

Never jump straight into designing. Start by asking clarifying questions to understand exactly what you are building.

Functional Requirements:
  • What specific features need to be supported?
  • Who are the primary users?
  • What are the core user journeys?
Non-Functional Requirements:
  • How many users do we expect?
  • What’s the read/write ratio?
  • What are our availability requirements?
  • Are there any specific performance requirements?
  • Do we need real-time features?
Example for a Twitter-like system:
  • “Should we support media uploads or just text?”
  • “Do we need to handle celebrity users with millions of followers differently?”
  • “What’s our target latency for the timeline feed?”

Step 2: Estimate scale and identify constraints (5 minutes)

Use back-of-the-envelope calculations to understand the scale you are designing for. This helps identify potential bottlenecks early.

Key metrics to estimate:
  • Daily Active Users (DAU)
  • Read and write requests per second
  • Storage requirements
  • Bandwidth requirements
Example calculation:
  • 100M DAU
  • Each user posts 2 tweets/day → 200M writes/day → ~2,500 writes/second
  • Each user reads 100 tweets/day → 10B reads/day → ~115,000 reads/second
  • Read:Write ratio = 46:1 → read-heavy system, optimize for reads

Step 3: Design high-level architecture (10 minutes)

Start with a simple, high-level design that addresses the core functionality. Think of this as your system’s skeleton.

Essential components:
  • Client applications (web, mobile)
  • Load balancers
  • Application servers
  • Database layer
  • Content Delivery Network (CDN) for static assets

Draw boxes and arrows showing the flow of data. Keep it simple initially — you will add complexity later.

Scroll to Top