Lesson 1 of 8 | Frame the Problem
Turn a Vague Prompt into Testable Requirements
Outcomes
Separate functional requirements, quality attributes, scale assumptions, and explicit non-goals before drawing components.
Core method
Ask who uses the system, which operations matter, what data must persist, and what “success” means. Then prioritise latency, availability, durability, consistency, privacy, cost, and regional constraints. Convert adjectives into measurable targets: “fast” becomes a percentile latency objective; “reliable” becomes availability and data-loss expectations. State what is outside the first design so breadth does not hide the critical path.
Worked example
For a notification service, core functions might be submit, schedule, cancel, and observe delivery. Quality questions include peak requests per second, acceptable queue delay, duplicate tolerance, channel priority, and retention. Billing and campaign analytics can be explicit non-goals for the first 40 minutes.
Practice and review checklist
- Restate the goal in one sentence.
n- Rank three functional requirements.n- Quantify two quality attributes.n- Name assumptions and non-goals.n- Confirm the critical read and write paths.