An architectural decision must be made with genuinely insufficient information and the cost of delay is real. How should it be approached?
Show the full answer Hide the answer
First, identify what kind of uncertainty it is
- Resolvable cheaply — a load test, a prototype, a spike, a conversation with the vendor, a look at the data. Much apparent uncertainty is simply unmeasured, and a day of work removes it. This is always the first move.
- Resolvable expensively — it would take weeks to know, and the delay has a real cost.
- Genuinely unresolvable — it depends on future events nobody can predict: adoption, market response, a regulatory decision, a competitor.
These require completely different responses, and treating the third like the first produces analysis paralysis while treating the first like the third produces avoidable mistakes.
For unresolvable uncertainty
Optimise for the ability to respond rather than for the correctness of the prediction.
- Choose the option that preserves the most options. Between two designs of similar cost, prefer the one that can become either of two futures.
- Delay the irreversible parts. Build what is needed now behind a boundary, and defer the commitment until the uncertainty resolves — which frequently happens on its own, at no cost, if the design does not force the decision early.
- Bound the downside. Ask what the worst case costs rather than what the expected case does, and prefer the option whose worst case is survivable — which is not the same as the option with the best expected value.
- Make the decision small. Decompose so that the uncertain part is isolated and the rest proceeds.
- Set a trigger for revisiting — a metric, a date, a customer requirement — so the decision is monitorable rather than a snapshot.
Scenario thinking rather than prediction
Rather than forecasting one future, sketch three or four — 10× growth, flat growth, a large enterprise customer with unusual requirements, a regulatory change — and ask which design survives most of them and which fails catastrophically in any.
A design that is optimal in the expected case and catastrophic in one plausible case is usually the wrong choice, and this framing surfaces that in a way expected-value reasoning does not.
Making the decision anyway
- State the assumptions explicitly, since they are what will be wrong and what should be monitored.
- Record what would change the decision, converting it into a monitorable position.
- Decide and commit. A decision deferred is itself a decision, usually a worse one, because the delay has costs that are real and are rarely counted.
- Say plainly that it is a bet. Presenting an uncertain decision as confident is a credibility risk that is discovered once, and being explicit about uncertainty is what makes the later revision legitimate rather than embarrassing.
The disposition that matters
Being wrong quickly and cheaply is far better than being right slowly, for the large class of decisions that are recoverable. The architect's contribution under uncertainty is less about predicting correctly and more about arranging the system so that being wrong is survivable — which is a design activity, not an analytical one.