How to document a decision the team disagreed on

The decisions most worth documenting are the ones the team argued about. Not the obvious choices, the ones where everyone agreed immediately, those do not need a record because anyone facing the same situation would reach the same conclusion. A contested decision was contested because the right answer was not clear, and the conditions that made one option better than another were specific. Those conditions can change. When they do, the next person who faces the question needs to know what the original reasoning was.
Without a record, that person restarts the argument from scratch. They talk to whoever is still on the team. They get a partial account of what was decided and no account of why. They make a choice that may replicate the original one or may overturn it, without knowing which history they are repeating.
This is why architectural decision records exist, and why the ones that matter most are written for decisions the team disagreed on.
What a decision record is
An architectural decision record is a short document that captures a decision already made. It is not a design document or a proposal. It records what was chosen, the context that made the decision necessary, the options that were on the table, and the reasoning behind the choice.
The most important part is the reasoning, not the choice. Anyone reading the record later can see what was decided by looking at the codebase. What they cannot see is why. The reasoning is what tells them whether the original logic still applies to the situation they are facing now.
A good decision record is one to two pages. It answers these questions: What was decided? What situation made this decision necessary? What were the realistic options? Why was the chosen option better than the others, given the constraints at the time? What was accepted as a tradeoff? A record that answers these questions and no more is useful. A record that runs to ten pages will not be read by the people who need it.
Why the minority view belongs in the record
Recording the view that did not win is part of recording the decision. The team member who argued for the other option was usually making a coherent argument. Including it is not about validating the losing side. It is about preserving the specific conditions under which the decision might be revisited.
If the team chose to keep a monolithic architecture because the team was small and the deployment complexity of a service split was not worth it, the person who argued for splitting the services was probably right that splitting would become necessary eventually. Including their argument tells future readers: here is the condition under which we should reconsider. If the team grows past a certain size, or if the deployment friction from the monolith becomes the main source of slowdowns, that is the moment to revisit the choice.
A decision record that includes only the winning position records a choice. A decision record that includes the minority view records a choice with the conditions under which it should be reconsidered. The second version is more useful over time.
How to frame it without assigning blame
The goal is a record of reasoning, not a record of who won. That framing matters for how the document reads and for whether the people who disagreed will engage with it honestly.
Write the minority view as a position that reasonable people held, with the specific reasons they held it. "The team considered building a separate service for the notification system. The argument for this was that notification volume would eventually justify independent scaling, and coupling the notification logic to the main application would make both harder to change." This is a fair account. It respects the people who made the argument and it gives readers the information they need.
Compare that to: "Some team members preferred a microservices approach, but we decided against it." That version preserves the choice but loses everything that makes the record useful.
Where to keep decision records
Decision records that live where engineers already go for context will be read. Records in a separate documentation system that nobody uses will not. For most engineering teams, the right location is the repository: a directory called decisions or adr with one file per decision, in Markdown. The decision is in the same place as the code it explains, and it is versioned alongside the code.
This matters most when the decision is about the structure of the code itself. If the decision explains why the product uses one database rather than two, or why a particular abstraction was introduced, the record belongs next to the code that embodies the decision. A reader who wants to know why the code is shaped this way should not have to look in a separate system.
Keeping records current
A decision that gets reconsidered should produce an update to the original record, not a new document that replaces it. Add a note at the top: the original decision, made on a specific date, was updated on a later date. The new record explains what changed and what was decided.
Do not delete the original. The original record explains why the product was built the way it was during the period when the original decision was in effect. Future readers working through the history of the codebase need to know that the architecture changed, and why the original architecture made sense at the time it was chosen. A decision record that only shows the current state has lost the reasoning that connects each stage of the product's history.
The decisions that never get written down
The highest-value decision records are the ones that feel too controversial to write down formally. A decision to use a third-party service rather than build in-house. A choice to defer a security feature until a later release. A tradeoff between consistency and performance that reasonable engineers argued about for weeks.
These decisions are contested because they were genuinely hard, and the reasoning behind them is exactly what future engineers need. The teams that document them have fewer repeated arguments and fewer cases where a new engineer undoes a decision the team spent weeks reaching, because the reasoning that produced the decision is available to anyone who reads the record.
The team that argues hard and then writes down nothing has done half the work.


