Rebuilding legacy software module by module, without stopping the business

Big-bang rewrites freeze a business for a year and still ship late. Running the new system alongside the old one is slower on paper and faster in practice.

Maks Miśkow

Founder, Pace Labs

Published
Reading time
2 min
Operations team celebrating a successful release
On this page
  1. 01Why big-bang rewrites fail
  2. 02Riskiest module first
  3. 03Run both systems side by side
  4. 04Retire, don't switch off

When an internal platform gets old, the tempting plan is a clean rewrite. It almost never goes to plan: requirements move while you build, the old system keeps changing, and the switch-over becomes a single terrifying weekend.

  • Split the system into modules users would recognise.
  • Ship the riskiest module first, on purpose.
  • Run old and new side by side, syncing data both ways.
  • Retire each old module only when nobody opens it anymore.

Why big-bang rewrites fail

A full rewrite can't be tested by real users until it's nearly done, so every wrong assumption surfaces at the end. Meanwhile the business keeps changing the old system, and the new one chases a moving target.

Riskiest module first

It feels safer to start with something easy. It isn't — the easy modules teach you nothing. Start with the module that matters most: if that one fails, nothing else will.

Takeaway

The first module you ship should be the one you're most afraid of. That's where the unknowns are.

Run both systems side by side

The new module reads and writes the same data as the old system, so users can switch back if something breaks. That safety net is what lets a pilot team use it for real work from week one.

Retire, don't switch off

Old modules go away when usage drops to zero on its own, not on a date in a plan. When nobody opens the legacy screen for two weeks, it's safe to remove.

Working on something like this? Let's talk it through.

Maks MiśkowFounder, Pace Labs

Need more info?

You ask, we answer

The questions we hear most about this topic. Anything more specific — ask us directly.

Maks Miśkow

Founder, Pace Labs

Usually replies within one business day

For a few months, slightly. It's far cheaper than a year-long freeze or a failed cut-over weekend.
Usually a sync layer that writes changes to both databases, with the old system as the source of truth until a module is retired.
Our target is the first module in production within three months, then a new module every four to six weeks.

Resources

Keep reading

See all articles