The System Everyone Works Around
There's an application at the center of your operation that nobody chose and everybody depends on. Releases happen quarterly because anything more frequent is too risky. Two people understand the codebase, and one of them is talking about retirement. Every new initiative — the customer portal, the reporting project, the AI pilot — eventually files into the same queue, waiting for a change to a system that resists change. The business has stopped asking for improvements to it. They just build spreadsheets around it instead.
The warning signs are rarely technical first. They show up as commercial symptoms: quotes that take days because pricing logic lives in one module nobody touches, onboarding that requires swivel-chair data entry, audit findings about access controls the platform can't express. By the time leadership says the word "modernization," the system has usually been taxing the business for years.
Why Rewrites Make It Worse
The instinctive response is the clean-slate rewrite: fund a replacement, build it in parallel, cut over when it's done. It feels decisive. It is also the highest-risk move available. The legacy system encodes fifteen years of business rules — many undocumented, some that only exist because a customer contract demanded them in 2014. A rewrite team has to rediscover all of it while the business keeps changing the target. Meanwhile the old system still needs patching, so your scarcest experts are split across two codebases. Most big-bang rewrites either arrive late and incomplete, or never arrive at all — and the day they do arrive, everything changes at once, which is exactly when undiscovered rules surface as production incidents.
The alternative isn't tolerating the status quo. It's changing the shape of the risk: many small, reversible steps instead of one giant irreversible one. Whether to rebuild, replace with a product, or retire each piece is a build-vs-buy decision per capability — not one verdict for the whole system.
The Path That Works: Strangle, Don't Storm
1. Put a contract in front of it
Before replacing anything, stand up an API layer over the legacy system's key functions — pricing, customer lookup, order status. Nothing is rewritten yet; the layer simply gives every consumer a stable, documented way in. This single move pays immediately: new initiatives integrate against the contract instead of the legacy database, and the eventual replacement can happen behind an interface consumers never notice changing.
2. Carve out the first capability
Pick one capability with high business friction and manageable entanglement — not the hardest piece, not the easiest, the one the business will feel. Build it as a standalone service behind the API layer, route traffic to it, and keep the legacy path available as a fallback. You learn your real delivery velocity, your data-migration discipline, and your operational readiness on a bounded slice — while the business gets a working improvement in months, not years.
3. Release in phases, keep rollback
Repeat capability by capability, in an order set by business value and risk, with a rollback path at every stage. The legacy system shrinks in place: fewer modules in production, fewer reasons to touch it, less that can break. There is no cutover weekend. One day the last consumer moves off the old system, and decommissioning it is an accounting event, not a heroic one.
4. Run it with an operating model, not a project plan
Modernization done this way is a delivery capability, not a one-time program. A small durable team owns the API layer and the migration sequence; product owners from the business rank the capability queue; a regular cadence reviews what the last slice taught and re-plans the next. When the program ends, that team and cadence remain — which is how you avoid creating the next legacy system.
Before and After: What Actually Changes
The point of modernization is not a newer codebase. It's a different set of operating numbers. This is the shape of the change a well-run program produces:
- Release cadence: from quarterly, risk-managed release events to routine weekly (or on-demand) deployments per service.
- Change failure: from every release being a gamble to small changes with small blast radii and rollback as a habit.
- Key-person risk: from two irreplaceable experts to documented contracts and services any competent team can maintain.
- Integration: from point-to-point connections into the database to consumers on a stable API layer that survives the migration.
- Cost profile: from a growing maintenance tax plus emergency spend to a declining legacy footprint and investment redirected to capabilities that differentiate.
- Business responsiveness: from "that's a next-year change" to pricing, onboarding, and reporting changes shipped inside a quarter.
Numbers vary by starting point — which is why the program should baseline them in the first month and report them monthly. If a modernization effort can't tell you its deployment frequency and change failure rate, it's a rewrite wearing a safer name.
The Cost and Risk Conversation
Phased modernization can look more expensive on paper than a rewrite, because the estimate is honest: it includes the API layer, the parallel-run period, and the data work a rewrite quietly assumes away. The real comparison is risk-adjusted. A rewrite concentrates the entire budget on a single future event that history says slips; a phased program delivers value from the first quarter and can stop at any point with everything shipped so far still working. You are not buying a cheaper program. You are buying the ability to be wrong in small, correctable amounts — and paying down the highest-interest debt first instead of refinancing everything at once.
What Good Looks Like
Eighteen months in, the question "can we change this?" gets answered in days, not planning cycles. The board sees a legacy footprint shrinking on a chart and delivery metrics improving next to it. No cutover weekend ever happened. That end state starts with an honest portfolio decision: which applications deserve this investment, which should be replaced with a product, and which just need a decommission date. Our application development practice runs this as a phased program with the outcomes above as the contract — and the free Application Portfolio Assessment is the fastest way to see where each of your systems lands.
Which systems deserve investment?
The free Application Portfolio Assessment scores your portfolio in twelve questions — invest, tolerate, or set a decommission date.
Take the Application Portfolio Assessment →Continue Reading
Founder, Splendor Technologies
20+ years in AI, enterprise architecture, and application development. Helping organizations modernize technology and drive measurable business outcomes.
Work with Splendor
Ready to modernize without the big-bang risk?
Let's talk about which of your systems to modernize first — and what the before-and-after should look like for your organization.
Schedule a Strategy Session →