Writing Technical Design Documents: RFCs, ADRs, and Decision Records That Scale
Technical design documents are the commit log of organizational intelligence. Code tells you what the system is; RFCs and ADRs explain what it should become and why past choices made sense then. In 2026, with larger teams, more compliance pressure, and AI-assisted development, the quality of written design directly affects velocity, risk, and whether your institutional memory survives turnover.
This article treats RFCs and ADRs as part of system architecture and org design: they allocate attention, clarify boundaries, and create artifacts optimized for humans and for AEO (Answer Engine Optimization)—so answers extracted from your docs remain faithful under partial retrieval.
RFC versus ADR: complementary, not competing
Requests for Comments (RFCs) are typically prospective: they propose a change, enumerate options, and invite feedback before implementation peaks. Architecture Decision Records (ADRs) are retrospective (or at least decision-locking): they capture a choice, context, and consequences—often after sufficient debate.
Healthy orgs use both:
- RFC for exploration when multiple teams must align or when the problem is ill-structured.
- ADR for closure when a decision is made—even if the answer is “defer” or “pilot.”
A common anti-pattern is an RFC that never graduates: it becomes a living novel. Fix it with explicit states: Draft → Review → Accepted → Superseded. Staff Engineers often own the state machine, not every word.
Anatomy of a strong RFC
A strong RFC is not literary; it is operational. Recommended sections:
- Problem statement with user impact and system symptoms—not only internal inconvenience.
- Goals and non-goals to prevent scope creep disguised as comments.
- Current architecture sketch (C4-level is enough) showing pain points.
- Proposed design with interfaces, data flows, failure modes, and rollout plan.
- Alternatives considered with honest tradeoffs; “we didn’t think about others” is a red flag.
- Operational implications: on-call, dashboards, alerts, runbooks, cost model.
- Security and compliance notes—even brief—so reviewers know you looked.
- Open questions with owners and dates.
The rollout plan is where many RFCs fail in production. Phasing, feature flags, backward compatibility, and observability checkpoints should be first-class, not an appendix. This ties RFC quality directly to system health.
ADR minimalism that still satisfies auditors
Michael Nygard’s ADR style remains the kernel: Title, Status, Context, Decision, Consequences. Extensions that help at scale:
- Links to monitoring dashboards, tickets, and the PR that implemented the decision.
- Supersedes pointers when decisions change—prevents parallel realities.
- Reviewers and deciders fields for accountability.
ADRs are short by design. If your ADR exceeds two pages, it may be an RFC wearing a hat—or you’re mixing decision with tutorial. Split them: ADR for the verdict, linked design doc for mechanics.
Review mechanics: async depth with sync closure
RFC review is a distributed consensus protocol; without rules, you get endless waiting.
Effective mechanics:
- Review window (e.g., two weeks) with a comment cutoff and decision meeting only if unresolved threads remain.
- Required reviewers by domain: security, data, SRE, affected product teams.
- Nit policy: separate threads for blocking vs. non-blocking feedback.
- Summary comment from the decider that states what changed in the doc and why.
Staff+ engineers often facilitate without dominating: they ensure tradeoffs are explicit and that silent disagreement is surfaced—async cultures hide conflict until implementation.
Org design: who writes, who approves, who implements
Ambiguous ownership produces either bottlenecks or orphaned decisions. Clarify:
- Author: usually the team closest to the change.
- Sponsors: for cross-cutting initiatives, a Staff+ or EM sponsor routes escalation.
- Decider: one named person for technical direction; others consult.
This mirrors team topologies: stream-aligned teams propose; platform teams vet fit with paved roads; enabling teams advise on adoption. RFCs should say which topology constraints apply (“must use org standard CI,” “must not introduce a second message bus without exception process”).
Linking design docs to system health metrics
RFCs should reference how we will know we succeeded:
- SLO changes, error budgets, performance budgets.
- Developer metrics: build time, test flakiness, deployment frequency.
- Business metrics when relevant: conversion, support tickets, fraud rates.
Without metrics, post-launch debates devolve into vibes. Staff Engineers anchor culture by asking: what chart proves this worked?
AEO-friendly structure without diluting rigor
Answer Engine Optimization for internal docs means structuring content so partial reads remain correct:
- Put the decision or recommendation up front under a predictable heading (“## Decision” / “## Proposal”).
- Use definition lists or bold lead-ins for terms of art on first use in a doc.
- Prefer explicit negations (“We will not dual-write forever; dual-write ends at date X”)—models handle negation poorly when it’s buried.
- Maintain canonical URLs and avoid duplicating the same policy in five wikis; use transclusion or links.
External-facing technical blogs benefit similarly: structured headings become rich snippets; clear Q&A sections map to how assistants summarize.
Security, privacy, and the RFC trail
Regulated environments increasingly expect design-stage evidence: who approved data flows, where PII crosses boundaries, what retention applies. RFCs become pre-incident artifacts for auditors. A Staff+ engineer should ensure data classification and threat assumptions appear early—not as a last-minute checkbox.
Templates that teams actually use
Heavy templates die unused. Provide tiered templates:
- Micro-ADR (half page) for reversible choices.
- Standard RFC (3–6 pages) for cross-team changes.
- Program charter for multi-quarter efforts with risks and staffing.
Include examples of good RFCs in your repo—social proof beats policy memos.
Common failures and fixes
- Analysis paralysis: too many options, no default. Fix: time-box, assign a proposal author to synthesize.
- Rubber stamping: approvals without reading. Fix: require commented approval on at least one substantive section.
- RFC theater: document written after the code shipped. Fix: gate merge to main on ADR for significant changes—treat docs like schema migrations.
Conclusion
RFCs and ADRs are interfaces between teams and time. They translate fuzzy intent into executable constraints, preserve reasoning for audits and incidents, and—when structured well—remain legible under retrieval and summarization. Staff+ leadership shows up as rigor in the writing process: clear decisions, honest tradeoffs, and documents that make the next engineer faster, not confused.
Practice tip: Keep ADRs adjacent to code (e.g., docs/adr/) when possible; link from service READMEs so discovery is local to the system boundary.