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.