Clarifying Requirements

Keep in mind that the end goal of systems design is to explain in great detail how to architect a system and address its core technical challenges rather than listing out all of the product's features.

In-Scope vs Out of Scope
Functional & non-functional

Don't just ramble around requirement and assumption from your own. Try to engage with
interviewer. e.g. : I am going to assume blah blah, is it looking reasonable?

For non-functional - don't sound "buzz-wordy" - and try to give context related example.

What's in and out of scope? and what area of focus for this problem?
Deprioritize the "generic features like likes, comments etc. unless you're making reddit"

A 45-minute interview is a very time-constrained environment to flesh out a broad design, so we have to narrow the scope to the most essential topics to thoroughly discuss. In this exploration phase, we'll learn how to identify and prioritize the distinct technical challenges in design prompts so that you can address them with a detailed proposal in the remainder of the interview.

We want to avoid diving into standardized technical topics like authentication, authorization, and superficial features.


🧠 Why

Systems design is an ambiguous, open-ended, broad discussion; navigating it is both technical and behavioral. Dissecting a prompt and prioritizing the most critical requirements lets you show your engineering intuition before diving into anything technical!

image.png

📚  Purpose

You want to show that you can make progress when dealing with ambiguity and identify the challenges you must solve, even if you may not know how to solve them.
The interviewer is looking for signals from your thought process and communication. Everything you say or draw should showcase your strengths and help the interviewer to evaluate you as a candidate. They do not expect you to create an accurate solution to the real-world system.

What things to keep out of scope?


How to do it?

Requirement gathering is a crucial step in a System Design Interview, as it helps clarify the problem, define scope, and align expectations. A well-structured approach ensures that you cover both functional and non-functional requirements efficiently.

Note

Keep in mind that the end goal of systems design is to explain in great detail how to architect a system and address its technical challenges rather than listing out all of the product's features.

1. Clarify the Problem Statement

2. Define the Functional Requirements or user stories

These specify what the system should do.

Common Functional Aspects to Cover

✅ CRUD operations (Create, Read, Update, Delete)
✅ Authentication & Authorization (e.g., OAuth, JWT)
✅ Third-party integrations (e.g., Payment, External APIs)
✅ Scalability requirements (future growth considerations)

3. Define the Non-Functional Requirements (NFRs)

These focus on system performance, reliability, and scalability.

Example questions:

4. Identify Constraints & Trade-offs

5. Summarize and Confirm

Samples

  1. Clarifying Requirements - URL Shortener
  2. Clarifying Requirements - Straw Poll