Writing Design Documents
3 exercises — problem statements, alternatives analysis, and implementation notes: the sections that make a design document trusted and actionable.
0 / 3 completed
1 / 3
Your team is writing the "Problem Statement" section of a design document for a new notification delivery system. The current system sends ~50,000 emails/day with a 12% bounce rate and no retry logic. Which problem statement is most effective?
Option B demonstrates the professional design document problem statement. It has five essential properties:
① Historical context — "built in 2021 for 8,000 accounts, now serving 94,000" — this explains why the system is strained without blaming the original authors. It transforms a systems failure into a scaling story, which is honest and accurate. Readers trust a problem statement that explains why the problem exists.
② Quantified symptoms — "50,000 emails/day, 12% bounce rate, industry average 2%" — the comparison to industry average is a critical move. Without it, 12% is ambiguous. With it, 12% is clearly a 6x deviation from acceptable.
③ Impact in business terms — "~6,000 notifications per day lost, including password resets, purchase confirmations, and security alerts" — this maps a technical metric (bounce rate) to user impact. Security alerts being silently dropped is a fundamentally different statement than "some emails are lost".
④ Second problem stated clearly — the opted-out users with no fallback channel — this is a scoping clarity move; it establishes that the problem has two dimensions, both of which the design must address.
⑤ Explicit scope boundary — "delivery layer only — templating and composition out of scope" — this is the sentence that prevents scope creep. Every good design doc problem section should define what is and is not in scope.
Option A is too vague ("needs improvement") and contains a solution ("better system") inside the problem statement — solution bias in the problem section closes off design alternatives prematurely.
① Historical context — "built in 2021 for 8,000 accounts, now serving 94,000" — this explains why the system is strained without blaming the original authors. It transforms a systems failure into a scaling story, which is honest and accurate. Readers trust a problem statement that explains why the problem exists.
② Quantified symptoms — "50,000 emails/day, 12% bounce rate, industry average 2%" — the comparison to industry average is a critical move. Without it, 12% is ambiguous. With it, 12% is clearly a 6x deviation from acceptable.
③ Impact in business terms — "~6,000 notifications per day lost, including password resets, purchase confirmations, and security alerts" — this maps a technical metric (bounce rate) to user impact. Security alerts being silently dropped is a fundamentally different statement than "some emails are lost".
④ Second problem stated clearly — the opted-out users with no fallback channel — this is a scoping clarity move; it establishes that the problem has two dimensions, both of which the design must address.
⑤ Explicit scope boundary — "delivery layer only — templating and composition out of scope" — this is the sentence that prevents scope creep. Every good design doc problem section should define what is and is not in scope.
Option A is too vague ("needs improvement") and contains a solution ("better system") inside the problem statement — solution bias in the problem section closes off design alternatives prematurely.
Next up: Incident Communications →