Loading learning content...
Every great system design begins long before the first component is drawn. It begins with a single, deceptively simple act: reading the requirements carefully.
This sounds trivial—of course you read the requirements. But there's a profound difference between reading and understanding, between scanning for keywords and systematically extracting the complete problem specification. This difference determines whether you build the right system or an impressive system that solves the wrong problem.
Consider this: in system design interviews at top companies (Google, Meta, Amazon, Netflix), the most common failure mode is not a weak technical design—it's solving the wrong problem. Candidates dive into architecture, sketch out databases and load balancers, only to realize ten minutes later that their interviewer expects something entirely different. The same pattern plays out in production engineering: teams spend months building systems that meet every stated requirement, yet fail spectacularly because unstated—but critical—requirements were never identified.
By the end of this page, you will possess a systematic methodology for dissecting system design requirements. You'll learn to extract maximum information from minimal text, identify hidden assumptions, and transform vague problem statements into precise design specifications. This skill becomes the foundation for everything that follows.
In system design, all subsequent decisions flow from your understanding of the requirements. Choose the wrong data model, and you can often refactor. Choose the wrong caching strategy, and you can adjust. But misunderstand the fundamental problem, and no amount of elegant engineering can save you.
This isn't hyperbole. Let me illustrate with a concrete example.
A major e-commerce company invested 18 months building a new inventory management system. The requirement was to 'provide real-time inventory visibility.' The team built a masterpiece: sub-second updates, beautiful dashboards, sophisticated conflict resolution. At launch, they discovered the business actually needed 'inventory visibility that updates within 15 minutes and integrates with the existing ERP.' The real-time system was too expensive to operate, couldn't integrate with legacy systems, and had to be completely rewritten. The lesson: precise requirement understanding is not optional—it's existential.
The Leverage Principle:
In engineering, leverage refers to how much output you get for a given input. Consider where in the design process your decisions have the most impact:
| Design Phase | Cost to Fix Mistakes | Impact of Good Decisions |
|---|---|---|
| Requirements Understanding | 1x (cheapest) | Determines if you solve the right problem |
| High-Level Architecture | 10x | Determines if the system can meet scale/reliability |
| Detailed Design | 50x | Determines implementation efficiency |
| Implementation | 100x | Determines code correctness |
| Production | 1000x+ (most expensive) | Determines if the business succeeds |
This is why experienced engineers spend what seems like a disproportionate amount of time on requirements. It's not hesitation—it's wisdom. Getting requirements right is 1000x cheaper than fixing them in production.
System design requirements come in many forms: a single sentence from an interviewer, a page-long product specification, or a casual conversation with a stakeholder. Regardless of format, every requirement can be decomposed into specific components. Mastering this decomposition is the first technical skill in requirements reading.
The Six Components of Any Requirement:
Every system design problem, whether for an interview or a real project, contains (explicitly or implicitly) these six fundamental components:
"Design a URL shortening service like bit.ly"• Actor: Users (anonymous or authenticated?)
• Action: Shorten URLs, redirect to original URLs
• Object: URLs (what types? any length limits?)
• Constraint: Scale (how many URLs per day?), latency requirements
• Quality: Availability (99.9%? 99.99%?), redirect speed
• Context: Why do users need short URLs? Analytics? Sharing?Notice how this simple prompt expands into dozens of implicit questions. Each component reveals unstated requirements that dramatically affect the design. A system for 1,000 daily URLs looks nothing like one for 1 billion.
The Extraction Process:
When you receive a requirement, work through each component systematically:
Step 1: Identify what's explicitly stated
Read the requirement and mark which components are explicitly mentioned. In our URL shortener example, only the action (shortening URLs) is truly explicit.
Step 2: Note what's implied
Some components are implied by context. 'Like bit.ly' implies public web access, implies HTTP redirects, implies some level of analytics.
Step 3: List what's completely missing
This is the danger zone. Make a list of components that remain unclear even after considering implications. These become your clarifying questions.
Step 4: Assess risk for each gap
Not all missing information is equally dangerous. Missing scale requirements can lead to 100x over- or under-engineering. Missing analytics requirements might only affect a minor feature.
| Component | Explicitly Stated | Implied | Missing (Risk Level) |
|---|---|---|---|
| Actor | No | Users (unspecified type) | Authenticated vs anonymous? (Medium) |
| Action | Yes - Shorten URLs | Redirect from short URL | Custom aliases? Bulk creation? (Medium) |
| Object | URLs | Web URLs | Any URL type? Max length? (Low) |
| Constraint | No | Web scale (like bit.ly) | Exact scale numbers (Critical!) |
| Quality | No | Should be fast, reliable | Specific SLAs (High) |
| Context | Partially (like bit.ly) | URL management need | Analytics requirements (Medium) |
Moving from unconscious reading to deliberate, systematic extraction requires specific techniques. These aren't intuitive—they must be learned and practiced. The following techniques are used by Staff+ engineers and system design experts worldwide.
The Multiple Pass Technique
Never read a requirement once. Each pass serves a different purpose and extracts different information.
First Pass: Holistic Understanding (30 seconds)
Read the entire requirement quickly without stopping. Don't analyze—just absorb. The goal is to understand the gestalt: What kind of system is this? What domain? What's the high-level purpose?
After the first pass, you should be able to say in one sentence what the system does. If you cannot, read again.
Second Pass: Component Extraction (2-3 minutes)
Now systematically identify each of the six components. Mark what's explicit, note what's implied, list what's missing. This is analytical reading—you're building a mental model.
Third Pass: Assumption Validation (1-2 minutes)
Challenge every assumption you made in the second pass. Ask yourself: 'What if the opposite is true?' If you assumed authenticated users, what changes if users are anonymous? If you assumed web-based, what if it's mobile-first?
Fourth Pass: Edge Case Identification (1-2 minutes)
Read for extremes. What happens with zero data? With billions of records? With malicious input? With network failures? Edge cases often reveal fundamental design requirements.
Awareness of common mistakes is half the battle. These pitfalls trap engineers at all levels—recognizing them helps you avoid joining them.
Paradoxically, experienced engineers are often MORE susceptible to premature pattern-matching than juniors. They've seen many systems, so their brains quickly categorize new requirements into familiar buckets. This speed can be a liability when the new problem subtly differs from past ones. Combat this by forcing yourself to list what's DIFFERENT about each new requirement, not just what's familiar.
After reading requirements comes questioning. But not all questions are equal. High-quality questions reveal more information with fewer words. This framework helps you formulate questions that efficiently close information gaps.
The SCOPE Question Framework:
Each letter represents a category of questions. Together, they cover the complete design space:
Question Quality Spectrum:
Not all questions advance your understanding equally.
Low-Value Questions:
Example (Low-Value): 'Will there be users?' → Obviously yes; tells you nothing
Medium-Value Questions:
Example (Medium-Value): 'Will there be more than a million users?' → Binary, but at least establishes scale
High-Value Questions:
Example (High-Value): 'What's the expected daily active user count, and how does it vary throughout the day?' → Reveals scale AND traffic patterns AND helps design for peak vs average load
Low-Value: 'Will users upload photos?'
Medium-Value: 'How many photos will be uploaded per day?'
High-Value: 'What's the expected photo upload rate, how should we handle upload spikes during popular events, and what's acceptable latency for uploads to appear in feeds?'The high-value question simultaneously reveals:
• Scale (photos per day)
• Peak behavior requirements
• Latency constraints
• Feed propagation expectations
One question, four architectural inputs.High-value questions are compound but coherent. They explore related dimensions together because those dimensions affect each other in technical design.
Reading is not complete until understanding is documented. This serves two purposes:
The Requirement Summary Format:
After reading and questioning, produce a structured summary. This becomes your design's foundation document.
1234567891011121314151617181920212223242526272829303132333435363738394041
# System Design: [System Name] - Requirements Summary ## 1. Problem Statement (1-2 sentences)What problem are we solving? Why does this system need to exist? ## 2. Core Functionality (Functional Requirements)List the essential features that define the system's purpose:- [ ] Feature 1: Description- [ ] Feature 2: Description- [ ] Feature 3: Description ## 3. Non-Functional Requirements| Requirement | Target | Priority | Notes ||-------------|--------|----------|-------|| Availability | 99.9% | High | ... || Latency (p99) | <200ms | High | ... || Data Durability | 99.999% | Critical | ... | ## 4. Scale Estimates| Metric | Current | 1 Year | 5 Year ||--------|---------|--------|--------|| DAU | ... | ... | ... || Requests/sec | ... | ... | ... || Storage | ... | ... | ... | ## 5. Constraints- Technical: Existing systems, required integrations- Business: Budget, timeline, team size- Regulatory: Compliance requirements ## 6. Assumptions (to be validated)- Assumption 1: [Status: Unconfirmed/Confirmed]- Assumption 2: [Status: Unconfirmed/Confirmed] ## 7. Out of Scope (Explicit Exclusions)- Feature X: Not included because...- Scenario Y: Not considered because... ## 8. Open Questions- Question 1: [Blocking/Non-blocking]- Question 2: [Blocking/Non-blocking]Why This Format Works:
In interviews, you won't fill out a full template. But you SHOULD verbally summarize back to the interviewer: 'So we're building X that needs to handle Y scale, with Z being the most critical quality. Is that correct?' This confirms understanding and signals senior-level communication skills.
Let's apply everything we've learned to a real system design prompt. Walk through this case study actively—don't just read, actually practice the techniques.
The Prompt:
Design a notification system for a large-scale social media platform.
First Pass: Holistic Understanding
Reading the prompt holistically, we understand this is about:
Gestalt Statement: 'A system to notify social media users of relevant activity at large scale.'
Good. We have a basic understanding. Now we break it down.
We've covered the first and most critical step in any system design exercise. Let's consolidate the key takeaways:
What's Next:
Reading requirements carefully gives you raw information. The next page explores how to identify scope and constraints—transforming that raw information into the boundaries that shape your design. You'll learn to distinguish between the essential and the optional, the flexible and the fixed, the now and the later.
You now possess a systematic methodology for reading system design requirements. This isn't just interview preparation—it's a skill that will serve you in every engineering role. Practice these techniques on every new project, and they'll become second nature. Next, we'll explore how to identify scope and constraints from your requirement analysis.