The rewrite trap
Every team living with a painful legacy system eventually hears the siren song: let's just rewrite it properly. It's almost always a mistake. Rewrites take twice as long as estimated, the legacy system keeps changing underneath them, and for years the business pays for two systems while benefiting from one.
The uncomfortable truth is that the legacy system encodes decades of business rules many undocumented, all load-bearing. A rewrite bets the company on rediscovering all of them at once.
The strangler-fig alternative
Named after the fig species that grows around a host tree, the strangler pattern modernizes a system from the outside in:
- Put a facade in front. An API gateway or routing layer through which all traffic flows. At first it just passes everything to the legacy core.
- Extract one capability at a time. Pick a bounded slice work orders, notifications, pricing and build its modern replacement. Route only that traffic to the new service.
- Prove it, then move on. The new slice runs in production, handling real load, while everything else stays put. If it fails, you route back. Risk is contained to the slice.
- Retire the core gradually. As slices move out, legacy modules go read-only, then get switched off. Eventually the old tree is hollow.
What makes it work in practice
Choose slices by seam, not by size. The best first candidates have clear boundaries and few tangled dependencies reporting and notifications are classic starters. The worst are deeply entangled core entities; save those for when the pattern is proven.
Invest early in the data story. The hardest part is rarely the code it's keeping data consistent while two systems share ownership. Change-data-capture and clear write-ownership rules per entity prevent most of the pain.
Keep a scoreboard. Percentage of traffic on the new path, modules retired, incidents per system. Modernization programs die of invisibility; a scoreboard keeps sponsors funding them.
The payoff
At Veridian Energy, this approach took a 20-year-old ERP to modern cloud services with zero days of business disruption field crews went mobile and month-end close dropped from nine days to two, while the legacy core shrank quietly in the background.
Modernization doesn't have to be a bet-the-company event. Done strangler-style, it's just disciplined engineering one proven slice at a time.
Ujen Basi
Full Stack Developer and Head of Engineering
Part of the Converge Solutions team writing about what we learn building technology for ambitious organizations.