The second rewrite is the dangerous one. The first is forced on you; the second you choose — usually for the wrong reasons.
The first rewrite is honest. The code is genuinely tangled, the team has learned what the product actually is, and a clean slate buys real velocity. The second rewrite is where studios go to die.
By the second one, the codebase is fine. What's changed is that the team is bored, a new framework is shiny, and “we'd do it better now” feels like wisdom rather than restlessness. It almost never is.
Rewrites don't fix culture. They just give it a new place to express itself.
01 — The testThree honest questions
- Is the current code actually blocking us, or just unfashionable?
- Will the rewrite ship something a user can feel?
- Have we tried deleting the worst parts first?
If the honest answers are no, no, and no, you don't want a rewrite. You want a quiet week to delete code and rename things. It's cheaper, and it works.