Modernize without the rewrite: the strangler-fig way
By Ava Lindqvist
Every legacy system is someone's hard-won knowledge, encoded badly. The instinct to throw it all away and start fresh is understandable — and almost always a mistake. A rewrite freezes feature work, hides risk until the very end, and asks everyone to trust that the new thing will be better before a single user has touched it.
Grow the new around the old
The strangler-fig pattern takes its name from a vine that grows around a host tree until it can stand on its own. Applied to software, you route a slice of traffic through new, well-tested code while the old system keeps running. Each slice is small, shippable, and reversible.
- Pick the highest-risk seam, not the easiest one.
- Put a test harness around the legacy behavior first.
- Ship the new path behind a flag and compare results before cutting over.
Why reversible matters
The point isn't speed for its own sake. It's that at no moment are you betting the company on a flag day. If a slice misbehaves, you flip the flag back and nobody notices. That safety is what lets the team keep shipping features the whole time.
A migration you can roll back at any moment isn't a migration — it's just Tuesday.