jaugusto.dev

Software Engineer

The Role of ADRs in Software Engineering Decisions

It's a Tuesday afternoon. A new engineer joins your team, opens the repo, and asks the question every codebase eventually faces: "Why did we build it this way?"

You open your mouth. You pause. You realize you don't actually remember.

The Decision Loop You Don't Know You're In

You remember there was a meeting. You remember Carlos pushed for one thing and Priya pushed for another. You remember someone — maybe you? — made a call. But the why is gone. The trade-offs you weighed, the constraints you accepted, the alternatives you rejected — all of it has dissolved into the fog of "that's just how we do it here."

This is the silent tax your team pays every single sprint. And the receipt is called an Architectural Decision Record.

Without ADRs, your team enters a loop that quietly bleeds hours, week after week:

The decision loop teams fall into when reasoning isn't captured — every cycle costs hours of re-litigation and slows every onboarding.

What an ADR Actually Is

An ADR is a small, dated document — usually a single page of Markdown — that captures one architectural decision: the context that forced it, the options you considered, the choice you made, and the consequences you accepted. That's it. No ceremony. No template gymnastics. Just the reasoning, frozen at the moment it was fresh.

Each ADR has a lifecycle that mirrors how real decisions evolve. They get proposed, accepted, and eventually — when reality changes — either superseded or deprecated. The history doesn't disappear. It accumulates.

The lifecycle of an ADR — decisions don't get deleted, they get evolved with their reasoning intact.

And here's the uncomfortable part. Think about the last three significant technical decisions your team made. The choice of message broker. The decision to introduce that new service. The pattern you adopted for handling auth. Can you, right now, name what the rejected alternatives were and why you rejected them? If you can't — and most of us can't — your team has already lost something it will pay to relearn.

The Cost of Forgetting

Without ADRs, every architectural choice in your codebase becomes a black box. The new engineer treats it as sacred ("it must be this way for a reason"). The senior engineer treats it as flexible ("we can change it, I don't remember why we did it that way"). Both are wrong, in opposite directions, and both are dangerous.

When was the last time someone on your team proposed a refactor that would have undone a deliberate decision made eighteen months ago — and nobody in the room had enough context to push back? When was the last time you spent two hours in a meeting re-litigating a debate your team had already resolved, because nobody could find the notes? That's not collaboration. That's a memory leak. Your organization is paying compute on the same decision, over and over.

The Hidden Benefit Nobody Talks About

ADRs flip the equation. Instead of decisions evaporating, they accumulate. Six months in, you have a log you can grep. A year in, you have a trail that explains the shape of your system. Three years in, you have something rarer than working code — you have institutional memory that survives turnover.

And here's the part most teams miss: the act of writing an ADR is itself a quality gate. The moment you try to articulate "here's why we chose X over Y," you discover whether you actually have a reason. How many decisions on your roadmap right now would survive the discipline of being written down in three paragraphs? If the answer makes you wince, the problem isn't the documentation. The problem is the decision-making.

The objection is always the same: "we don't have time." But you do have time. You have time to redo the same debate in three months. You have time to rewrite a service because nobody remembered why the original constraint existed. You have time to onboard the same context, by hand, to every engineer who joins. That time exists. ADRs just move it earlier, where it costs less.

Where to Start Tomorrow Morning

You don’t need a process overhaul. You don’t need a tool. You just need a place to store important technical decisions. The next time your team makes a decision worth a meeting, write it down before the calendar invite cools off. Number it. Date it. Mark it accepted, superseded, or deprecated as life moves on. That’s the entire practice. So before you close this tab — what’s the most consequential decision your team made in the last 90 days that has no written record? Open a file. Start typing. Future you, and the engineer who hasn’t joined your team yet, are both going to thank you.