The Architecture Decisions You Cannot Undo
Most technical choices are cheap to reverse. A small handful are not, and they deserve most of your thinking time.
Teams spend enormous energy on decisions that can be reversed in an afternoon, and almost none on the two or three that will outlive every person currently in the room. Swapping a logging library is a pull request. Choosing how your data is partitioned is a company-wide project two years from now.
The short list
- Your data model, and the identity keys other systems will copy
- Service boundaries — what is allowed to talk to what, and how
- The consistency guarantee you promise users, because rolling it back breaks their trust, not just your code
- Anything you expose as a public contract: URLs, event payloads, exported IDs
Everything on that list shares a property: other people build on top of it, and the cost of change grows with every integration. A framework choice costs you a rewrite. A data model choice costs you a migration plus every consumer you did not know you had.
A practical filter
Before a design review, I ask one question: if this turns out to be wrong in eighteen months, what does undoing it cost? If the answer is a sprint, decide quickly and move on. If the answer is a quarter and a data migration, slow down, write the decision record, and make someone argue the opposite case properly.
Speed on reversible decisions is what buys you the time to be careful on the ones that matter.
The failure mode I see most often is not recklessness — it is uniform caution. Teams that deliberate over every choice equally end up slow and still get the expensive ones wrong, because the important decisions never got more attention than the trivial ones.
- #System Design
- #Trade-offs
- #Data Modelling