The Tech Lead Handbook · Technical Decisions
Decision Speed: One-Way and Two-Way Doors
Match the decision process to the cost of being wrong: move fast on reversible choices, slow down on irreversible ones, and use 'disagree and commit' to end stalemates.
Scenario
Example team: the platform team needs a new CI runner setup. The discussion between two options has lasted five weeks, with benchmark after benchmark. Meanwhile the same team picked a primary database for a new service in a 30-minute meeting.
What you see on the team
- Small, easily changed decisions (a library, a CI setup, a folder structure) debated for weeks.
- Large, hard-to-change decisions (data stores, public APIs, data models) made quickly by whoever is in the room.
- Meetings that end with "let's gather more data".
- Frustration from both the cautious and the fast-moving engineers.
The common mistake
Using one decision process for everything — either everything is slow and careful, or everything is fast and casual.
Why it happens
Teams don't classify decisions by reversibility. Debates about small choices are comfortable and visible; big choices are often made implicitly, as a side effect of a project. Amazon's 2016 shareholder letter puts it simply: "Many decisions are reversible, two-way doors. Those decisions can use a light-weight process." The same letter suggests most decisions "should probably be made with somewhere around 70% of the information you wish you had".
The playbook
Classify first — ask "what does it cost to undo this in six months?"
| Two-way door (reversible) | One-way door (hard to reverse) | |
|---|---|---|
| Examples | CI tooling, internal library, code layout, feature-flagged behaviour | Primary data store, public API contract, data model with migrations, vendor lock-in with long contract |
| Who decides | The engineer or pair doing the work | Tech lead with review; ADR |
| Process | Short write-up, try it, measure | Design doc, alternatives, review, ADR |
| Time box | Hours to days | Days to a few weeks |
Make one-way doors more reversible where cheap: abstraction around a vendor, feature flags, dual writes during migrations, versioned APIs.
End stalemates explicitly. When arguments are repeating and the door is two-way, the decision owner decides. The same letter recommends the phrase "disagree and commit": you can disagree and still commit fully to the chosen path.
Write a revisit trigger: "We'll revisit if build times exceed 15 minutes" — so disagreement has a constructive outlet.
What to say
Classifying in a meeting:
"Before we go further — is this a one-way or two-way door? If we pick the wrong CI runner, what does it cost to switch in three months? A week? Then let's decide today, try it for a month, and revisit if build times go above 15 minutes."
Closing a stalemate:
"We've heard the arguments twice. I'm going with option B for the reasons in the doc. Tom, I know you'd have chosen A — can you disagree and commit? I've written down your concern as the revisit trigger."
Trade-offs
- Fast decisions on two-way doors occasionally cost a rework; that is usually cheaper than weeks of debate.
- "Disagree and commit" can be abused to silence dissent; it only works if the disagreement is heard and recorded first.
- Reversibility is a spectrum; when unsure, ask what data, contracts or users would be affected by a reversal.
Signals it's working
- Reversible decisions take days, not weeks.
- Irreversible decisions have a design doc and ADR.
- Disagreements are recorded with revisit triggers, and some are actually revisited.
- People commit to decisions they argued against.
Key points
- Classify decisions by the cost of reversing them before choosing a process.
- Two-way doors: decide fast, close to the work, with a revisit trigger.
- One-way doors: design doc, alternatives, review, ADR — and make them more reversible where cheap.
- End stalemates explicitly: hear and record the disagreement, then disagree and commit.
Practice questions
Your team has debated two CI setups for five weeks. What do you do?
Answer
Classify it as a two-way door (switching costs days), let the owner decide now, record the minority concern as a revisit trigger (e.g. build time over 15 minutes), and ask everyone to disagree and commit.
Give two examples of one-way-door decisions in software and one way to make each more reversible.
Answer
Choosing a primary data store (keep a repository layer and plan dual writes for migrations); publishing a public API contract (version it and deprecate gradually); signing a long vendor contract (abstraction layer, shorter term).
What makes 'disagree and commit' healthy rather than a way to shut people up?
Answer
The disagreement is genuinely heard and written down first, the decision owner explains the reasoning, and there's a revisit trigger. Then everyone commits fully, including those who disagreed.
Open in the app to mark lessons complete, take notes and track your progress.