Why Your Team Should Document Architectural Decisions
Undocumented decisions cost more than you think — in onboarding time, repeated debates, and lost institutional knowledge.
Picture this. It's a Monday morning. A new engineer on your team opens the codebase and finds that your service communicates with three other services through Kafka, but talks to a fourth one over gRPC. She asks the obvious question: why?
Nobody on the current team knows. The engineer who made that decision left eight months ago. The Slack thread where it was discussed has scrolled into oblivion. Someone vaguely remembers that "there was a latency issue," but can't recall the specifics. So the team spends 45 minutes in a meeting reconstructing the reasoning from memory, arrives at a plausible-sounding explanation, and moves on.
This scene plays out in engineering organizations every single day. It's not dramatic. Nobody files an incident report. But it's corrosive — a slow leak of time, context, and confidence that compounds over months and years.
The Real Cost of Undocumented Decisions
Technical decisions have a half-life. The reasoning behind them fades as people leave, priorities shift, and the codebase evolves. When that reasoning isn't written down, three things happen:
Onboarding slows to a crawl. New engineers can read code and figure out what the system does. But understanding why it's built that way requires context that doesn't live in the code. Without written decisions, every new hire has to reconstruct that context through tribal knowledge — hallway conversations, Slack archaeology, and bothering senior engineers who are trying to ship features. A study by Stripe in 2018 estimated that developers spend an average of 17.3 hours per week on maintenance tasks like understanding and managing existing code. Undocumented decisions make that number worse.
The same debates happen over and over. Six months from now, nobody remembers why you picked Kafka over RabbitMQ. So someone proposes switching to RabbitMQ. The team has the same discussion again, weighs the same trade-offs, and arrives at the same conclusion — or, worse, arrives at a different one because the original context is lost. This isn't hypothetical. If you've been on a team longer than a year, you've seen this happen.
People are afraid to change things. When you don't know why a decision was made, changing it feels risky. Was there a constraint you're not aware of? A dependency you can't see? The rational response is to leave it alone, even if the original reasoning no longer applies. This is how systems accumulate accidental complexity — layers of decisions that nobody dares revisit because the reasoning is gone.
Architecture Decision Records
In 2011, Michael Nygard introduced the concept of Architecture Decision Records (ADRs) in a blog post that has since become a foundational reference. The idea is simple: every significant architectural decision gets a short document that captures the context, the decision, and the consequences.
An ADR is deliberately lightweight. It follows a fixed format:
- Title — A short noun phrase. "Use PostgreSQL for the event store."
- Status — Proposed, accepted, deprecated, or superseded.
- Context — What's the situation? What forces are at play?
- Decision — What did you decide?
- Consequences — What happens as a result, both good and bad?
That's it. An ADR can be written in 15 minutes. It's not a design doc or a specification — it's a record of a single decision and the reasoning behind it.
Nygard's key insight was that these records should be immutable. You don't go back and edit an ADR when circumstances change. Instead, you write a new one that supersedes the old one. This preserves the timeline of your thinking: you can see not just what you decided, but what you used to think and why you changed your mind.
What Happens When You Actually Write Things Down
Teams that document decisions consistently report a few concrete benefits:
Onboarding gets faster. New engineers can read through the decision log chronologically and understand how the system evolved. Instead of "ask Sarah, she's been here longest," you have "read ADRs 14 through 22, they cover the payment service redesign." This doesn't eliminate all questions, but it eliminates the repetitive ones.
Alignment improves. When a decision is proposed in writing, everyone reviews the same information. This is different from a meeting where whoever talks first frames the discussion, or a Slack thread where half the team misses the message. Written proposals create a level playing field. The introvert who would never speak up in a meeting can leave a detailed comment on a document.
Accountability becomes natural. Not accountability in the punitive sense — accountability in the sense that decisions have authors and reviewers, reasoning is explicit, and trade-offs are acknowledged. When something goes wrong, you can look at the original decision, see what assumptions were made, and learn from it. Without documentation, post-mortems devolve into finger-pointing because nobody can agree on what was actually decided.
Institutional memory survives turnover. Teams change. People leave, get promoted, move to different projects. The decisions they made don't have to leave with them. A well-maintained decision log is one of the few assets that actually gets more valuable over time.
"We Don't Have Time to Document"
This is the most common objection, and it deserves a direct answer: you don't have time not to document.
The time you spend writing a decision record is small — 15 to 30 minutes for a lightweight ADR, a few hours for a full RFC. The time you spend without documentation is larger but invisible: repeated discussions, slow onboarding, cautious-to-a-fault engineering, and the occasional costly reversal of a decision that was made for reasons nobody remembers.
Documentation isn't overhead. It's leverage. You invest a small amount of time now to save a larger amount of time later, distributed across many people.
The trick is to keep the bar low. Not every decision needs a formal document. Reserve it for choices that are hard to reverse, affect multiple parts of the system, or would be confusing to a future reader. A reasonable threshold: if someone would reasonably ask "why did we do it this way?" in six months, write it down.
Getting Started
If you don't have a documentation practice today, here's a practical way to start:
Start with the next decision. Don't try to retroactively document every past choice. That's a trap. Instead, the next time your team makes a meaningful architectural decision, write it down. One document. See how it feels.
Use a simple format. Nygard's ADR template (Context, Decision, Consequences) works well. Don't over-engineer the template. You can refine it later.
Store them next to the code. A docs/decisions/ directory in your repository works. The documents travel with the code, show up in pull requests, and are versioned automatically. Some teams use a dedicated tool (this is what DesignDoc is built for), but the format matters less than the habit.
Review them in PRs. When someone proposes a new decision record, review it like you'd review code. Ask questions. Push back on weak reasoning. Suggest alternatives. The review process is where most of the value gets created.
Reference them in code comments. When a piece of code exists because of a specific decision, link to it. // See ADR-014 for why we use a write-ahead log here is more useful than a paragraph of inline explanation.
The Compound Effect
Documenting decisions is like writing tests. The value of any single test is small. The value of a comprehensive test suite is enormous. Similarly, one ADR doesn't change much. But a year's worth of documented decisions transforms how your team operates.
You stop relitigating. You onboard faster. You change things with confidence because you understand the original reasoning. And when that reasoning no longer applies, you can see it clearly and act on it — instead of leaving the old decision in place because nobody remembers why it's there.
The best time to start was when you made your first significant decision. The second-best time is the next one.
Stop losing decisions in Slack and Docs
DesignDoc gives every RFC a structured workflow, inline reviews, and a permanent home.
Get Started