Every legacy system invites the same fantasy: tear it down and rebuild it clean. It's almost always a mistake. Big-bang rewrites are where budgets die — and the new system usually reinvents bugs the old one had already solved.
Why rewrites fail
- The old system encodes years of undocumented edge cases a rewrite quietly drops.
- You ship nothing new for months while the rewrite catches up to where you already were.
- Two systems in parallel doubles maintenance, not halves it.
The incremental path
- 1.Strangle, don't replace. Put a façade in front of the legacy system; route functionality to new services one slice at a time.
- 2.Start at the seams — modernise what changes or hurts most first.
- 3.Keep the data where it is, at first.
- 4.Ship continuously — every slice delivers value and de-risks the next.
A good modernisation is invisible to users and reversible at every step. A rewrite is a held breath until launch day.
Modern AI tooling genuinely accelerates the grind — understanding old code, drafting tests to lock in behaviour — but it accelerates a disciplined process; it doesn't replace one.
Written by ivector
Start a project →