Refactor, Rebuild, or Replace?
“Refactor. Rebuild. Replace. How to Choose.”

Refactor, Rebuild, or Replace?

How to Choose the Right Path for Ageing Software

At some point, every growing business runs into the same question:

“Do we keep patching this system—or is it time to start fresh?”

Whether you're dealing with a clunky ERP, an in-house quoting engine from 2012, or a customer portal that feels... tired—you're facing a choice that’s as technical as it is strategic.

And the wrong move? It doesn’t just cost you money—it can cost you momentum.


🔍 First: What Are the Options?

Let’s define the three most common routes:

✅ Refactor

You’re keeping the core system, but improving the internal code—restructuring, simplifying, and cleaning up without changing what it does.

→ Think: renovating a kitchen without changing the layout.

🧱 Rebuild

You’re recreating the system, usually from scratch, based on the same requirements—but using modern architecture, tools, and standards.

→ Think: demolishing and rebuilding a better version of the same house.

🔄 Replace

You’re switching to an entirely different system—maybe off-the-shelf, maybe another custom build—to meet changing business needs.

→ Think: moving house entirely.


🧠 How to Decide

Here’s how I approach this with clients (and have done for 25+ years across logistics, manufacturing, government, and emergency services):

1. What’s the business pain?

  • If the pain is technical fragility, refactor might help.
  • If the pain is speed of change, a rebuild may be smarter.
  • If the pain is misalignment with business model, replacement might be inevitable.

2. How long will you live with it?

If the system needs to serve you for 3+ more years, a band-aid probably isn’t enough.

3. Do you know how it works?

If no one understands the system deeply anymore, refactoring becomes risky. You may accidentally solidify bad logic.

4. Can your team support it?

Your tech team’s comfort (or fear) around the codebase matters. If they flinch at the idea of updates, that’s a signal.


💬 Real-World Examples

🔧 Refactor: A regional council’s asset management app

  • Pain: Sluggish performance, occasional crashes
  • Fix: Cleaned up legacy SQL queries, modularised front-end
  • Result: System was stabilised in 8 weeks, no user retraining required

🧱 Rebuild: National manufacturing scheduler

  • Pain: Inflexible logic, couldn’t handle newer product lines
  • Fix: Rebuilt the entire rules engine using modern microservices
  • Result: 40% faster scheduling, integration-ready for IoT

🔄 Replace: Freight client with spreadsheet-turned-database monster

  • Pain: Couldn’t scale, prone to human error
  • Fix: Moved to a modern SaaS logistics platform with custom integration
  • Result: 90% reduction in admin time, happier staff


💡 Pro Tips

  • Start with a code audit A light-weight technical review will save you from assumptions.
  • Talk to users Is the UI the issue—or the workflow behind it? You’d be surprised.
  • Don’t let nostalgia guide the decision “It’s always worked” is not a strategy.
  • Don’t let fear delay it Every year spent hesitating compounds the cost.


✅ My Rule of Thumb

If your system is core to operations, has no documentation, and new devs dread touching it... It’s time to rebuild or replace.

📩 Want a second opinion?

Sometimes all you need is a clean, honest view of your options.

We help teams evaluate risk vs return—without pressure to jump into a rebuild you don’t need.

Let’s chat: simon@purser.com 🔗 hellodev.com.au / FlexiDev.co

To view or add a comment, sign in

More articles by Simon Purser

Explore content categories