Smart engineers will disagree on architecture, that's healthy. The TL's job is to turn disagreement into a good decision and a committed team, not to win the argument. Most disputes dissolve once everyone agrees on the criteria.
A process for resolving it
1. AGREE on the criteria first — what are we optimizing for?
(scale, simplicity, time-to-ship, team familiarity)
2. Let each side make its STRONGEST case — steelman, don't strawman
3. Look for DATA — spike it, benchmark it, prototype it
4. If still tied — the TL decides, and explains why
5. DISAGREE AND COMMIT — once decided, everyone rows together
A concrete example
Two engineers argue microservices vs. monolith. You reframe: "What are we optimizing for in the next year?" The answer, shipping fast with a small team, makes the monolith the obvious call. The argument was really about unstated goals.
