Product & Technology Problems
When the debt is already showing up as recurring incidents and fragile releases.
What we improve
Most products in this position do not need a rewrite. They need someone who can assess the risk, decide the order, and protect delivery while the system evolves.
Symptoms
The default answer is usually wrong
A full rewrite asks the business to fund a long period with no new customer value, while the existing system still needs maintaining. It also assumes the current behaviour is fully understood, which is usually the very thing that has been lost.
In most systems the risk is concentrated. A small number of modules carry most of the danger, and the rest is serviceable. Establishing which is which is a diagnosis, and it is cheaper than the rewrite it usually prevents.
Sometimes replacement genuinely is right. When it is, it should be a decision made on evidence, sequenced deliberately, and scoped to the part that warrants it, rather than adopted as a default because the current system is unpleasant to work in.
Approach
What the system does, where the behaviour is understood, and where knowledge has been lost. Assessed against evidence rather than the team's impressions of it.
Which parts are genuinely dangerous to change, what it would cost the business if each failed, and which risks are being carried unknowingly.
A destination that is reachable from where you actually are, rather than the architecture you would choose starting today.
Sequenced so each stage reduces risk and leaves the system releasable. No stage requires a pause in feature delivery.
Change delivered in pieces that can be verified and, if necessary, reversed. Big-bang cutovers are avoided wherever the architecture allows.
Agreed criteria for each stage, and a monthly written report on what moved, what did not, and which risks changed.
Decision criteria
Applied deliberately, per component, with the reasoning recorded.
The behaviour is understood and valuable, the structure is the problem. Improve it in place, under test.
The behaviour is understood but the implementation cannot carry where you are going. Rebuild that part, not the system.
It is risky and poorly understood, but stable. Put a boundary around it so it stops constraining everything else.
It serves a need that no longer exists, or serves very few. Removing code is the cheapest modernization there is.
It works, it is not blocking anything, and touching it would spend risk for no return. Often the correct answer, rarely the popular one.
The most common failure is treating these as competing budgets, which turns every planning session into an argument the technical side eventually loses.
The workable approach is to sequence modernization behind the roadmap: when a feature requires touching a risky area, that area is improved as part of the work. Progress on both comes from the same effort, and the debt reduction is visible in delivery rather than defended as a separate line item.
Outcomes
When the debt is already showing up as recurring incidents and fragile releases.
The engagement this sits inside, and what Kendoo is accountable for.
How this work looks in practice, including a rewrite that turned out to be unnecessary.
Bring the rewrite proposal if you have one. Thirty minutes is usually enough to tell whether it is the right call.