Loading learning content...
In 1962, President Kennedy asked NASA to put a man on the moon. If NASA engineers had simply nodded and started building rockets, the mission would have failed. Instead, they asked questions—thousands of them:
How do we protect astronauts from radiation? How do we navigate without GPS? How do we land on an unknown surface? How do we bring them back?
Each question revealed constraints, risks, and sub-problems that shaped the entire Apollo program. The mission succeeded not because the initial goal was clear, but because engineers relentlessly interrogated every assumption until clarity emerged.
System design works the same way. The quality of your design is bounded by the quality of the questions you ask. A mediocre engineer accepts vague requirements and makes assumptions. An exceptional engineer interrogates every ambiguity until the problem space is fully illuminated.
By the end of this page, you will master a systematic questioning framework for requirements gathering, understand the psychology of effective questioning, learn to probe both breadth and depth, recognize and avoid common questioning anti-patterns, and apply these skills in both real-world projects and system design interviews.
Questioning is not merely a technique—it's a fundamental engineering discipline that serves multiple critical functions:
1. Revealing Hidden Requirements
Stakeholders often don't know what they need until you ask. They describe symptoms ('we need faster reports') without articulating underlying problems ('key decisions are delayed by 3 days waiting for data'). Good questions uncover root causes:
These questions might reveal that the real need isn't faster reports—it's real-time dashboards or automated alerts.
2. Exposing Assumptions
Both you and stakeholders carry assumptions that feel so obvious they go unspoken. These implicit assumptions are landmines:
Questions surface these conflicts before they become expensive misunderstandings.
3. Defining Boundaries
Without explicit boundaries, scope expands infinitely. Questions establish what's in and out:
Each 'no' narrows scope; each 'yes' adds complexity. Both are valuable clarity.
4. Building Shared Understanding
Requirements documents can be misinterpreted. Conversation can't. When you ask 'So if I understand correctly, a user can only belong to one organization at a time?' and the stakeholder says 'Actually, power users can belong to multiple,' you've prevented a fundamental data model error.
5. Demonstrating Due Diligence
In interviews and professional settings, asking thoughtful questions signals competence. It shows you:
IBM's classic study found that fixing a requirements error costs 100x more if discovered in production versus during requirements gathering. Every question you don't ask is a potential 100x cost multiplier lurking in your project.
Rather than asking random questions, use a systematic framework that ensures comprehensive coverage. Here's a battle-tested approach organized into six dimensions:
WHO — Understanding Actors and Stakeholders
Every system has multiple actors with different needs, permissions, and expectations. Thoroughly exploring 'who' prevents permission gaps and ensures the system serves all intended users.
Questions to Ask:
Primary Users:
User Roles:
External Actors:
Scale of Actors:
When a stakeholder states a requirement, ask 'Why?' five times to reach root causes. 'We need real-time updates' → 'Why?' → 'So users see latest prices' → 'Why does that matter?' → 'Because stale prices cause wrong decisions' → reaching: 'We need prices accurate within 1 second to prevent trading errors.'
Different types of questions serve different purposes. Master this toolkit to extract the right information at the right time:
| Type | Purpose | Examples |
|---|---|---|
| Open-Ended | Explore broadly, discover unknowns | 'Walk me through a typical user journey' / 'What frustrates you about the current process?' |
| Closed-Ended | Confirm specific facts, get precise answers | 'Is multi-currency support required?' / 'Should sessions expire after 30 minutes?' |
| Probing | Dig deeper into initial responses | 'You mentioned reports are slow—can you quantify slow?' / 'What do you mean by real-time?' |
| Clarifying | Resolve ambiguity in statements | 'When you say user, do you mean end-user or admin?' / 'Does edit include delete?' |
| Hypothetical | Explore edge cases and future scenarios | 'What if two users edit the same document simultaneously?' / 'What happens if we 10x our user base?' |
| Comparative | Understand preferences and priorities | 'Is reliability more important than speed?' / 'Should we prioritize mobile or desktop?' |
| Quantifying | Get measurable specifics | 'How many transactions per day?' / 'What latency is acceptable?' |
| Scenario-Based | Ground abstract needs in concrete examples | 'Can you give me an example of when this feature would be used?' / 'Walk me through a failed payment scenario' |
Question Sequencing:
Start broad, then narrow:
This funnel starts with exploration and ends with confirmation, ensuring both breadth and precision.
While the WHO/WHAT/WHEN/WHERE/WHY/HOW framework is universal, specific domains have recurring question patterns. Here are question sets for common system design domains:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
# Domain-Specific Question Sets ## Social Media / Content Platforms ### Content- What types of content? (text, images, video, stories, reels)- What are size/length limits?- Is content editable after posting? Deletable?- Is there content moderation? Automated or manual? ### Interactions- What actions on content? (like, comment, share, save, report)- Can interactions be undone?- Are there reaction types beyond binary like? ### Feed/Discovery- How is the feed ordered? Chronological or algorithmic?- Are there multiple feeds? (for you, following, explore)- How fresh must the feed be? ### Relationships- What relationship types? (follow, friend, block)- Are relationships symmetric or asymmetric?- Are there relationship limits? ### Viral Content- How do we handle celebrity users with millions of followers?- What's the expected fanout ratio? (average followers per user)- How do we handle viral content that gets millions of views/interactions? --- ## E-Commerce / Marketplace ### Catalog- How many products? How many attributes per product?- How often do products/prices change?- Are there product variants? (size, color)- Is inventory tracking required? Real-time accuracy? ### Search- Full-text search required?- Faceted search? (filter by category, price, brand)- What's the acceptable search latency?- Do we need search suggestions/autocomplete? ### Shopping Cart- How long do carts persist?- Can items sell out while in cart?- Is cart shared across devices? ### Checkout/Payment- What payment methods?- Multi-currency? Multi-country tax?- Split payments? Installments?- What happens if payment fails mid-order? ### Fulfillment- Order status tracking?- Shipping integrations?- Returns/refunds handling? --- ## Messaging / Real-Time Communication ### Messages- 1:1 or group? Maximum group size?- What content types? (text, media, voice, location)- Are messages encrypted end-to-end?- Can messages be edited? Deleted? Deleted for everyone? ### Delivery- What delivery guarantees? (at-most-once, at-least-once, exactly-once)- Delivery receipts? Read receipts?- What's acceptable delivery latency? ### Presence- Online/offline status?- Typing indicators?- Last seen timestamps? ### History- How far back is message history?- Is history searchable?- Can history be exported? --- ## Financial / Payment Systems ### Transactions- What types? (transfers, payments, deposits, withdrawals)- Maximum transaction amount? Limits?- Multi-currency? Foreign exchange? ### Compliance- KYC/AML requirements?- Transaction monitoring for fraud?- Reporting to regulators? ### Consistency- What consistency guarantees?- How to handle double-spend scenarios?- What's the reconciliation process? ### Security- PCI-DSS compliance required?- Encryption requirements?- Token vault vs direct card storage?Every project you work on, every interview you conduct, save the good questions. Over time, you'll build a personal library of domain-specific questions that make you faster and more thorough in requirements gathering.
Asking questions is not just about words—it's about human interaction. Understanding the psychology behind effective questioning makes you dramatically more effective at extracting requirements.
Handling Difficult Stakeholders:
The Over-Specifier: Says exactly how to build it ('Use React with GraphQL') → Ask 'What outcomes are you hoping that achieves?' to separate requirements from solutions.
The Under-Specifier: Says almost nothing ('Just make it good') → Use concrete examples: 'Let me walk through a scenario. A user logs in and wants to...'.
The Contradicting Stakeholder: Requirements conflict ('It must be free and generate $10M revenue') → Surface contradictions gently: 'Help me understand how we achieve both objectives.'.
The Scope Creeper: Every question adds 10 new features → Explicitly ask about priorities: 'If we could only have three of these features for launch, which ones?'.
Subject matter experts often skip 'obvious' details because they're so obvious to them. A financial domain expert won't mention that accounts have currencies because they can't imagine anyone not knowing that. Ask naive questions: 'Sorry if this is basic, but does every account have exactly one currency?'
Just as there are effective questioning patterns, there are anti-patterns that undermine requirements gathering:
In interviews, your questioning skills are under direct evaluation. You typically have 3-5 minutes at the start for requirements clarification. Make them count.
Interview Questioning Strategy:
Sample Question Sequence for 'Design a URL Shortener':
123456789101112131415161718192021222324252627282930313233
# Clarifying Questions: URL Shortener ## Functional Scope (~90 seconds)- "Should users be authenticated, or can anyone shorten URLs?"- "Do we need custom short aliases, or only system-generated?"- "What's the URL format preference? (length, character set)"- "Do we need analytics? (click counts, geographic data, referrers)"- "Should URLs expire, or be permanent?" ## Scale (~60 seconds)- "How many new URLs shortened per day?"- "What's the read/write ratio? (typically 100:1 or higher)"- "How long do we need to keep URLs? (important for storage)" ## Performance & Reliability (~30 seconds)- "What redirect latency is acceptable?"- "What's the availability target?"- "What happens if we can't find a short URL? 404 or custom page?" ## Edge Cases (~30 seconds)- "Do we need to prevent shortening of malicious URLs?"- "Should we handle URL collisions? (two people shortening same URL)" After clarifying:"Based on our discussion, I'll design for:- 100M URLs shortened per day (write-heavy ingestion)- 10B redirects per day (read-heavy serving)- Sub-100ms redirect latency at p99- 99.9% availability- Anonymous shortening with optional analytics- 7-character alphanumeric codes I'll defer: custom aliases, expiration, malware scanning. Sound good?"A powerful interview tactic: 'What aspects of this system are you most interested in exploring?' This helps you focus on what the interviewer cares about, ensuring your design discussion hits their evaluation criteria.
Let's apply everything we've learned. Given the following vague requirement, generate clarifying questions:
Requirement: "Build a food delivery platform like UberEats."
Your task: What questions would you ask? Think through each category (Who, What, When, Where, Why, How) and each question type. Below is an example of thorough interrogation:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
# Clarifying Questions: Food Delivery Platform ## WHO - Actors- Who are our users? Customers, restaurants, drivers, or all three?- What's our launch market? Single city, region, or national?- Expected user count: DAU, peak hourly users?- Do restaurants use their own drivers or our network? ## WHAT - Entities and Operations- What menu complexity? Just items, or modifiers/customizations?- Photo requirements for menu items?- Order tracking granularity? (placed, preparing, picked up, en route, delivered)- Payment methods? (card, wallet, cash)- Ratings/reviews for restaurants? Drivers?- Customer support: chat, phone, self-service? ## WHEN - Timing- Real-time order streaming or batch?- Order ahead supported?- Restaurant operating hours management?- Expected delivery time calculation needed?- What's acceptable order-to-delivery time? ## WHERE - Geography- Single market or multi-city launch?- How granular is delivery zone? (exact addresses, zones, postcode)- How far can delivery radius be?- Do we need to handle areas with poor GPS? ## WHY - Business Goals- Revenue model? Commission, delivery fee, subscription?- What differentiates us from UberEats/DoorDash?- Priority: restaurant count, driver count, or customer volume?- Budget/timeline constraints? ## HOW - Quality Requirements- Order placement latency?- How accurate must ETA be?- What if driver cancels mid-order?- Restaurant goes offline mid-order?- Double-ordering prevention? ## SCALE ESTIMATION- 1M DAU in year 1- 2 orders/user/week → ~300K orders/day- 3x peak → ~900K orders at peak hour → 250 orders/second- Menu items: 100K restaurants × 50 items = 5M items- GPS updates: 100K active drivers × every 5 seconds = 20K updates/secEvery time you use an app, ask yourself: 'What requirements would I need to clarify to build this?' Take Instagram—what's the question about how long stories last? Video resolution limits? Maximum following count? This develops your requirements intuition.
We've explored the critical skill of asking the right questions—a capability that directly impacts the quality of every system you'll ever design. Let's consolidate:
What's Next:
We now know how to extract requirements through effective questioning. But not all requirements are equal—some define the core system while others are nice-to-haves. The next page explores scoping the problem: how to prioritize, bound, and focus your design effort to deliver maximum value within constraints.
You now possess a comprehensive toolkit for asking the right questions. This skill compounds—the more you practice, the more natural it becomes, until thorough requirements interrogation is automatic. Every system design you undertake will benefit from this foundation.