Club players lose to tactics. Everyone above that loses to position — a slow accumulation of small concessions, none of which looked like a mistake at the time. Codebases go the same way, and the concessions have names: the one-off flag, the temporary bridge, the we will clean this up after launch.
The shared lesson
A move that only works if nothing else changes is not a move, it is a liability with a delay on it.
- In chess you ask what squares this gives up.
- In a codebase you ask what this makes harder to change.
They are the same question. Neither has a good answer available in the moment you most want one.
Where the analogy pays
Tempo. Shipping is not only about the feature; it is about who has to move next and how constrained they are when they do. A change that leaves the next person with three good options is worth more than a slightly better change that leaves them with one.
Full version to follow.