Topic: adr adoption guide
ADR Adoption Guide — How to Introduce Architecture Decision Records to a Resistant Team
Most ADR adoption attempts fail within 60 days. Not because the practice is wrong, but because the rollout approach is wrong: a team meeting about why ADRs are good, followed by an instruction to "start using the template," followed by silence, followed by two ADRs written by the one person who cared, followed by nothing. The teams that actually sustain the practice don't start with a proposal. They start with a single retrospective ADR about a decision the team is already tired of explaining — and let the value speak before asking anyone to change their habits.
TL;DR
Don't propose ADRs at a team meeting. Write one retrospective ADR about a real recent decision, submit it as a PR, and let the team read it. If the reaction is "I wish we'd had this six months ago," you have buy-in. Start with a minimal format (three fields, not five), use the ADR GitHub Action as scaffolding not enforcement, and apply the review checklist to keep quality high without creating friction. The 60-day threshold: if nobody has looked up an existing ADR in 60 days after writing three of them, the directory needs better visibility — not more ADRs.
Why teams resist ADRs — the real objections behind the stated ones
The stated objection is almost always "overhead." The actual objections underneath are usually one of three things, and each has a different fix:
"We already do this in Confluence" → actually: tribal knowledge, not decision records
A Confluence page titled "Architecture Overview" is not an ADR. It documents the current state of the system; it doesn't document the moment of decision, the alternatives that were rejected, and the trade-offs that were accepted. The test: can a new engineer find the answer to "why did we pick Postgres over MongoDB?" in your Confluence, with the reasoning that was current at the time the decision was made? If the honest answer is "they'd find an overview page that mentions we use Postgres, but not why," your Confluence doesn't replace ADRs — it documents outcomes without preserving the reasoning that produced them.
"We move too fast" → actually: the documentation-on-fire fallacy
The framing is backwards. Teams that "move too fast for ADRs" are accumulating architectural debt that will cost more time later than the ADR would have taken to write. The counter-evidence is direct: how much time did you spend last month explaining a decision to a new team member or a new stakeholder? That explanation time — repeated monthly because nothing is written down — exceeds the time it would have taken to write one ADR when the decision was made. The practice isn't overhead; it's paying now to avoid paying more later.
"Nobody will read them anyway" → actually: a visibility problem, not a value problem
ADRs that live in a directory nobody knows exists don't get read. The fix is wiring the directory into the team's existing flow: link ADRs from the PR description of the implementation they document ("see ADR-0042 for why we chose this"), pin the directory in your team Slack channel, add the path to the new-hire onboarding doc. An ADR is read when someone has a question and knows where to look. Getting them to look is a discoverability problem, not an evidence that the practice is useless.
Start with a retrospective ADR — not a proposal
The most effective ADR rollouts follow the same pattern: someone writes one retrospective ADR for a decision that already confused a new teammate, or that the tech lead had to explain in a meeting last month, and submits it as a PR without a team-wide proposal about "adopting the ADR practice."
The retrospective ADR has two advantages over a prospective proposal:
- It demonstrates value immediately. Instead of arguing that ADRs would have been useful, you show a specific case where this ADR would have saved time. The reaction "I wish we'd had this six months ago" is the buy-in moment. You can't manufacture that with a process pitch; you can trigger it with a concrete example.
- It removes the cold-start paralysis. The hardest part of writing any ADR is knowing what to write for the first one. A retrospective ADR has a natural subject: the decision someone asked you to explain last week. The reasoning exists; you're reconstructing it, not inventing it. The prospective ADR requires anticipating what future engineers will want to know — which is harder to do well under time pressure.
Choosing the right first ADR: Pick the decision that caused the most confusion or re-explanation in the last three months. Good candidates: the database selection, the authentication approach, the choice of mono-repo vs. multi-repo, a dependency that confused a new hire, a pricing call that came up in a board meeting. Not good candidates: an implementation detail (which connection pool library to use), a reversible UI choice, anything that will change in a quarter.
The when-to-write-an-adr decision tree can help you pick the right candidate: four questions (durable, cross-team, contested, costly to reverse) that sort decisions into yes/no/maybe. Start with a "yes" on all four.
The two-champion requirement
Sustainable ADR adoption almost always requires two champions at different levels of the hierarchy:
- A technical champion — usually the person reading this page. They write the first ADRs, set up the template and directory structure, and review incoming ADRs for quality. They care about the audit trail.
- A managerial or tech-lead champion — someone senior enough that the practice gets referenced in PR reviews, mentioned in team syncs, and expected as part of the "done" definition for significant decisions. Without this, the technical champion writes ADRs alone; the rest of the team sees them as optional ceremony the one person who cares imposes on themselves.
If you're a staff engineer or senior IC pushing this without tech-lead buy-in, you're not blocked — but you need a different strategy. Rather than asking the tech lead to mandate ADRs, ask them to link to one when they explain a decision in a team sync. "I wrote up the reasoning as an ADR, here's the link" is a lower-friction ask than "we should adopt the ADR practice." Once the tech lead has linked to an ADR twice in a meeting and seen the value of not re-explaining the same decision to different people, the mandate case makes itself.
Minimum viable format for skeptical teams
The Nygard template's five sections (Title, Status, Context, Decision, Consequences) are the right target for a mature practice. But requiring five complete sections for a team's first ten ADRs creates a quality bar that kills the habit before it forms.
The minimum viable ADR for adoption purposes has three parts:
- A decision statement title — "We chose Postgres for the user database" not "Database selection." The title should pass the test: can a new engineer scan the ADR directory and understand every decision made without opening a single file? If yes, the titles are decision statements.
- A why paragraph — two to four sentences covering: what constraint or problem triggered the decision, what alternatives were seriously considered, and the one-sentence reason each was rejected. This doesn't have to be comprehensive; it has to be honest. "We considered MongoDB but rejected it because our schema is well-defined and we wanted stronger ACID guarantees for the dual-write pattern we're using" is enough.
- A consequences paragraph — the most important part, and the most often skipped. At least one upside and at least one downside. The review checklist's single most important item is that the Consequences section has at least one negative consequence — an ADR that lists only benefits wasn't written honestly, and a Consequences section that only says positive things provides false assurance to future engineers who trust it.
Once the team is writing ADRs consistently with the three-field minimum, add Status (the lifecycle state — Proposed, Accepted, Superseded, Deprecated) and then the full Context section. The MADR variant is a good stepping-stone between minimal and Nygard-complete: structured YAML frontmatter for machine readability, with narrative prose for the human-readable body.
Using CI as adoption scaffolding, not enforcement
The ADR GitHub Action workflow is commonly framed as enforcement — a way to prevent low-quality ADRs from merging. That framing is wrong for early-stage adoption and right for mature practices.
In the first 90 days of adoption, the job of CI is to help engineers write ADRs that look right without having to remember the template. The GitHub Action's three immediate benefits for new adopters:
- Auto-numbering — the action can generate the next sequential ADR number, eliminating the "what number do I use?" friction that stops new contributors from even starting.
- Template scaffolding — the action can create a pre-filled template file when the branch is named
adr/NNN-slug, so the engineer starts with the structure already in place rather than copying from a previous ADR. - Status vocabulary enforcement — the action enforces that Status uses a valid lifecycle value (Proposed, Accepted, Superseded, etc.) which prevents the common early mistake of using "Draft" or "WIP" as Status values. This is a fast check with no false positives.
Hold off on enabling the reasoning-quality lint jobs (which check for alternatives count, consequences content, and active voice in the Decision section) until the team has written at least 10 ADRs. Failing those checks for a team that's still learning the practice creates friction at exactly the wrong moment — when the team is deciding whether the habit is worth maintaining. The human review layer in the review checklist handles reasoning quality; CI handles structure.
The 60-day adoption threshold
The best early indicator that ADR adoption is working is not how many ADRs the team has written — it's whether anyone has looked up an existing ADR to answer a question. If you've written three retrospective ADRs and nobody has linked to one, cited one, or mentioned one in a PR review in 60 days, the problem is visibility, not content.
Visibility fixes:
- Pin the ADR directory in your primary team Slack channel with a short note: "before asking 'why did we pick X' in this channel, check here first."
- Add an ADR lookup step to your pull request template: "does this change affect an existing ADR? If yes, link it. If this decision would have warranted an ADR, write one before merging."
- In every onboarding checklist for new engineers, include "read the first 5 ADRs in /doc/decisions/" before the first PR.
If 60 days pass and no ADR has been consulted, that's not evidence the practice is useless. It's evidence that the decisions you picked for the first ADRs were not the decisions that were actively creating confusion — go back to the retrospective-first step and pick different ones.
When someone blocks on ceremony
After the first few ADRs are written and merged, you will encounter the engineer who refuses to write one for a significant decision. The stated reason is usually "I don't have time" or "this is obvious, we don't need to document it." The implicit ask is that you stop requiring them to write it.
Two responses that don't create conflict:
- Offer to write the first draft from the PR description. Most decision reasoning is already in the PR description, Slack thread, or design doc associated with the implementation PR. Offer to take those and turn them into an ADR draft; all the engineer has to do is review and approve. This removes the "I don't have time" objection and demonstrates that the ADR is 20 minutes of synthesis, not a two-hour writing assignment.
- Ask the one question that the ADR answers. "If a new engineer joins in six months and asks why we built it this way, where do they find the answer?" If the honest answer is "they'd have to ask someone on Slack and hope that person remembers," the absence of an ADR has already accepted a future cost. Frame it as: "I'm not asking you to write documentation — I'm asking you to write down the one sentence you'd say if someone woke you up at 3am and asked why we chose this."
Avoid mandating ADRs for every significant decision in the first six months. Mandate them for the decisions where not having an ADR already caused a problem — new hire confusion, a technical interview question nobody could answer, a board question that took 20 minutes to reconstruct. The mandate sticks when it's backed by a specific incident, not a general principle about good engineering practice.
How WhyChose fits in
The hardest part of writing a retrospective ADR is reconstructing the reasoning. The decision was made in a ChatGPT or Claude conversation three months ago where you weighed the trade-offs, rejected two alternatives with specific reasoning, and landed on the current approach. That conversation captured the entire ADR — the context, the alternatives, the decision, the consequences — but it's buried in a chat archive somewhere, and starting from memory produces an ADR that says "we chose this because it seemed right" rather than one that says "we rejected MongoDB because our schema is stable and we wanted ACID guarantees for the dual-write pattern we were designing."
The WhyChose extractor reads your ChatGPT or Claude export and surfaces the decision-shaped conversations: threads where alternatives were named, trade-offs were discussed, and a conclusion was reached. A retrospective ADR drafted from an extractor output typically passes the review checklist's reasoning-quality items on the first review — because the reasoning was done in the conversation and the extractor makes it legible rather than requiring you to reconstruct it from memory.
Related questions
How do I convince my tech lead to try ADRs when they think it's overhead?
Don't propose ADRs as a practice — write one retrospective ADR for a decision the tech lead has personally had to explain more than once this quarter. Submit it as a PR. Most tech leads who resist ADRs as overhead respond differently when they see a concrete one about a real decision that already cost the team time. The barrier is that ADRs feel like speculative work; a retrospective ADR for a decision the team has already paid the explanation cost for is demonstrably not speculative.
Should we write ADRs for decisions that have already been made?
Yes — selectively. Retrospective ADRs for the 5–10 decisions that still shape your system are more valuable than prospective ADRs for 50 future decisions. Pick decisions where the reasoning is actively causing confusion or re-explanation, not decisions where the history is already obvious. For foundational retrospective ADRs, the WhyChose extractor can recover the original reasoning from the AI chat where the decision was first worked through — typically more accurate than memory six months later.
How many ADRs should a team of 8–10 engineers write per month?
Months 1–2: 2–4 retrospective ADRs total (not per month). The goal is demonstrating value and establishing the habit. Month 3 onward: roughly 1–3 per month for an active 8–10-person team. More than 5–6 per month suggests over-documenting reversible decisions; fewer than 1 per month means the practice has lapsed. The sustainable long-term range is 8–20 ADRs per year for a 5–10-person team.
What's the minimum viable ADR for a team that finds the Nygard template too formal?
Three fields: a decision statement title ("We chose Postgres for the user database"), a why paragraph covering what was rejected and why, and a consequences paragraph with at least one downside. The perfect five-section Nygard ADR that never gets written is worse than the three-field ADR that actually captures the decision. Add fields as the habit forms; the minimum viable ADR is the one that captures the decision, one real rejection rationale, and one honest trade-off.
Further reading
- When to write an ADR (and when you shouldn't) — the decision tree that determines which decisions warrant documentation at all: four questions (durable, cross-team, contested, costly to reverse) with 12 worked examples sorted into yes/no/maybe. The selection discipline that makes this adoption guide's "retrospective-first" approach work — pick the decisions that score "yes" on all four questions.
- How to document architecture decisions (without your team revolting) — the ongoing practice habits once initial adoption is established: the 3+1 format for the first five ADRs, the pull-request-template hook that makes ADRs the path of least resistance, and the cultural difference between a healthy and a performative ADR practice. The companion to this page: adoption is the initial rollout, documentation habits is the steady-state practice.
- The Nygard ADR template — the canonical five-section format (Title, Status, Context, Decision, Consequences) that this page's minimum viable three-field format is a stepping stone toward; includes the exact wording guidance for each section and the most common mistakes in each.
- ADR review checklist — what to look for before merging — the PR-reviewer's 12-item checklist across structure, reasoning quality, traceability, and longevity. Understanding the quality bar before starting adoption helps teams write ADRs that pass review on the first submission rather than learning the criteria through corrections.
- The ADR GitHub Action workflow — CI enforcement as adoption scaffolding: auto-numbering and template scaffolding remove friction for new contributors, while the lint jobs that check reasoning quality should be enabled after the practice is established, not during the first 90 days.
- Architecture Board charter template — the governance layer for teams above ~50 engineers where individual team ADR practices need to connect to a cross-team decision authority; the charter's input gates (ADR drafted in /doc/decisions/, two consulted parties named, cross-team impacts explicit in Context) require a healthy per-team ADR practice as a prerequisite.
- How to update an ADR (without breaking the audit trail) — the three things that legitimately change after an ADR is Accepted (Status, supersession links, and the Notes section), the immutability rule that prevents revision history from obscuring the original decision, and the atomic two-file protocol for supersession that preserves bidirectional integrity.
- The open-source extractor — recovers decision reasoning from ChatGPT and Claude chat exports; the primary tool for writing retrospective ADRs accurately without reconstructing reasoning from memory months after the fact.
- ADR lightweight template — LADR, Y-Statements, and the minimum viable format — the copy-paste template companion to this adoption guide: the three-field LADR format for prospective ADRs, the Y-Statement one-sentence form for inline PR descriptions, and the format selection decision table (LADR vs Nygard vs MADR). Use this page when the "minimum viable three-field format" section of this adoption guide becomes the actual template you hand to the team.
- ADR template for squad-sized teams — scaling from 3 to 50+ engineers — how the template and governance ceremony should differ by team size: the two-field minimal form for a three-person startup vs the full platform-ADR template with RFC link, stakeholder list, and alternatives table for a 50-person org. The adoption guide covers why to adopt; this page covers what template to adopt at each scale.
- When to retire an ADR — deprecation, supersession, and the never-delete rule — the complement to this adoption guide: once the practice is established and the directory has grown, teams face the question of what to do with decisions that are no longer operative. Covers the Deprecated state, the one-file protocol, and how a healthy deprecation cadence is a sign that the ADR practice is actually being consulted (you can't retire decisions you don't know are stale).
- ADR vs RFC — when to use each and how they work together — teams starting ADR adoption that already have an RFC or design-doc culture need this disambiguation before the adoption guide's approach lands cleanly. The RFC → ADR handoff pattern (RFC for pre-decision feedback, ADR written from the RFC outcome) is more adoptable in orgs with existing RFC culture than a cold ADR-only mandate that displaces a familiar process. Covers the integration strategy for organizations where "we already have design docs" is the most common objection to ADR adoption.
- ADR vs decision register — scope, mutability, and when you need both — how an ADR directory and a formal decision register differ in audience, mutability, and storage; the complementary pattern for architecture decisions that also require project-level governance tracking.
- Architecture decision record best practices — what actually works after year one — the consolidated reference for all the operational disciplines: the five rules that determine whether an ADR practice survives year one, the eight failure modes, the status lifecycle legal-vs-illegal transitions table, and the retrospective ADR pattern using AI chat exports. The counterpart to this adoption guide: this page covers the initial rollout, the best-practices page covers the ongoing operational discipline.
- ADR decision authority matrix — who writes, reviews, and approves — authority clarity is one of the biggest blockers to team-wide ADR adoption. Teams that start writing ADRs but have no agreed approval chain get stuck: ADRs pile up in "Under Review" because no one feels empowered to mark them Accepted, and engineers stop writing new ones because the process appears broken. The authority matrix solves this at adoption time rather than six months in when the first contested ADR surfaces. Covers the RACI for five decision classes, the self-approval boundary rule, time-boxing the review window, and the four anti-patterns that produce the "Under Review" graveyard.
- ADR governance patterns — async teams, decision authority, and the RFC announcement loop — the process complement to authority clarity: the governance patterns that make ADR review actually happen in distributed and remote-first teams. Covers announce-then-silence (the merge-if-silent ceremony that prevents review deadlock), decision classification by scope (Class 1 service-local / Class 2 cross-team / Class 3 foundational), the async RFC round for pre-decision input, and the four governance anti-patterns that stall adoption despite a clear authority model. Pairs with the authority matrix: the matrix defines who approves, the governance patterns define how approval happens.
- The RFC-to-ADR process — how engineering RFCs become architecture decision records — the operational detail for organizations that adopt ADRs alongside an existing RFC process. Where this adoption guide covers the strategy (retrospective-first, PR-template hook, authority clarity), the RFC-to-ADR process page covers the ceremony: the five RFC lifecycle stages, review period norms by decision scope, the section-to-section mapping from RFC text to ADR sections, and how to prevent the most common RFC failure (RFC that never closes because no decision-maker is named). For large-org ADR adoption specifically, reading both pages together gives the complete picture — this guide for the cultural rollout, the process page for the workflow once the RFC habit is in place.
- Retrospective ADR template — writing decision records for pre-adoption choices — the practical guide for the backlog every team inherits when starting an ADR practice: decisions made before ADRs existed. Covers the four source-material tiers (AI chat session, PR description, Slack thread, memory), the retrospective-confidence field, and backlog prioritization (decisions that are currently being re-litigated first, decisions where the decision-maker is leaving second). The "extractor for retrospective ADRs" section explains how AI chat exports surface the Alternatives Considered material that memory has lost for decisions made since 2022.