Why the reflex to redevelop is understandable but rarely correct
A system that creaks, causes delays, or no longer fits current ways of working: the urge to throw it out and start again comes quickly. That is understandable. But the reason a system breaks down is almost never the code itself. It is the point where two systems do not communicate, a process that was never properly defined, or data that is defined differently in multiple places. If those problems are not resolved before redevelopment begins, they will simply be built in again. The result is a new system with the same flaws.
When is software redevelopment the right choice?
There are situations where redevelopment is the most honest option. That is the case when technical debt has accumulated to the point where every change breaks more than it fixes. Or when the vendor of the existing system is gone, the licence is expiring, and no viable migration path exists. Also when the system was never properly built around the organisation's actual processes and that cannot be corrected structurally without rewriting everything. In those cases, continuing is a sustained drain on resources. But even then, it is rarely the entire system that needs to be rebuilt at once. Almost always it is a specific module, an integration, or a subprocess that needs redoing, not the complete landscape.
When is redevelopment the wrong answer to the right problem?
The most common situation: a system does its job, but slowly, cumbersomely, or with too much manual work in between. People export lists to Excel, copy and paste information from one system to another, or wait on approvals that circulate by email. That is not a reason to replace the core system. It is a reason to build targeted automation that eliminates the manual steps and moves data to the right place automatically. An AI Workers approach around an existing ERP, TMS, or WMS resolves this faster and cheaper, with less risk. You only discard what works when it is genuinely no longer usable.
What are the hidden costs of a full rebuild?
Redevelopment almost always takes longer than the initial estimate. Not because builders are slow, but because knowledge of the old system is never fully documented. Halfway through, you discover edge cases, client-specific agreements, and manual corrections that appear nowhere in a specification but are needed every single day. Meanwhile, operations do not stand still. You are building a new system while people continue working in the old one, with all the double entry and synchronisation problems that brings. That is justifiable when it is truly necessary. But when it is not, you pay a high price for a problem that could have been solved with a narrower approach.
How do you choose between rebuilding and an AI Workers approach?
Ask yourself this question: does the problem resolve itself if data reaches the right place and the manual steps in between are removed? If the answer is yes, redevelopment is almost certainly too heavy an intervention. An AI Workers approach or targeted document processing is the better option. If the answer is no, because the system is genuinely no longer adaptable, no longer supported, or structurally contains the wrong logic, then rebuilding is worth discussing. But start small: rebuild the most critical subprocess, bring it into production, and learn from that process before scaling further. Rebuilding everything in one go is almost always a mistake, even when you have a good reason to start.
Rebuilding custom or choosing a standard package: is there a third option?
Yes. When an organisation chooses to redevelop, that does not have to mean falling back on a generic standard package. The choice is not binary. A custom-built core system designed from the ground up around the organisation's own processes, with AI built in rather than added as a separate layer around it, is a realistic option. This delivers a system that genuinely follows operations, without the compromises of a package built for a hundred sectors at once. It does require a structured approach: clear milestones, go/no-go decision points, and ownership of code and data with the client. That is how you avoid trading one vendor dependency for another.
