Chapter 2 · Practice 1 of 4
Use short design docs for changes that are ambiguous or costly to undo
Why it matters
A design doc is an informal document written before coding begins that describes the high-level approach and, most importantly, the trade-offs considered. Malte Ubl's description of design docs at Google lists their purposes: catching design issues early, building consensus, considering cross-cutting concerns and recording decisions.
Common sections:
- Context and scope: what is being built and the landscape around it.
- Goals and non-goals: non-goals are things that could reasonably be goals but are deliberately excluded.
- The design: the approach, with diagrams, APIs and data storage where relevant.
- Alternatives considered: other approaches and why this one was chosen.
- Cross-cutting concerns: security, privacy and observability.
The same article suggests about 10 to 20 pages for larger projects and a 1 to 3 page mini design doc for smaller changes.
Do
- Write non-goals explicitly
- Always include alternatives considered
Avoid
- Docs that are only a step-by-step implementation plan with no trade-offs