skillbyte DE Talk to us
AI Engineering · Legacy modernisation

Code review stopped scaling.
The code did not slow down.

Teams using AI assistants ship two to five times more changes than they did eighteen months ago. Review capacity did not move. What breaks first is not quality, it is the belief that anyone still knows what went out.

What actually changed

Reviewing every line was always a proxy. Now it is a bottleneck too.

Line-by-line review worked because writing code was slow enough that reading it kept up. That assumption is gone. Teams respond by reviewing faster, which means reviewing worse, or by queueing changes, which means the merge conflicts arrive later and larger.

The way out is to stop treating all changes as equal. Most changes cannot cause real damage. A few can. Sorting them is cheap; reviewing them as if they were the same is what costs.

RISK CLASS A

Can lose money or data

Payment paths, permission checks, migrations, anything touching customer records. Human review stays mandatory, and the reviewer is named before the work starts rather than found afterwards.

RISK CLASS B

Can degrade the product

Business logic, integrations, anything a customer would notice within a day. Automated property tests plus a human who reads the diff summary rather than every line.

RISK CLASS C

Cannot do lasting harm

Copy, styling, internal tooling, tests. Gates run, humans do not. This is the majority of the volume, and taking it out of the queue is what gives the reviewers their time back.

What we install

Guardrails a team keeps using after we leave.

Classification at the pull request

Risk class assigned from the paths touched, not from what the author says the change does. Wrong classifications are visible and get corrected; unclassified changes do not merge.

Properties instead of examples

Property-based tests state what must always hold, so a generated implementation gets checked against the rule rather than against three cases someone happened to think of.

Provenance on every change

Whether a change was written, assisted or generated is recorded. Not to police anyone, but so that six months later you can answer an auditor, or find out whether a defect pattern clusters somewhere.

Observability as the review of last resort

Some things cannot be caught before deployment. Progressive delivery plus alerting on the properties that matter turns those into a five-minute rollback instead of a Monday incident.

Legacy modernisation

The system nobody wants to touch is usually the one that earns the money.

Rip-and-replace fails in mid-market companies for a reason that has nothing to do with technology: the business rules that matter were never written down anywhere except the code, and the people who could reconstruct them have retired. A rewrite is not a port, it is an archaeology project with a deadline attached.

Read the rules out first

Before anything moves, we extract the business rules actually encoded in the system and put them somewhere a person can read. Characterisation tests pin the current behaviour, including the behaviour nobody intended, so that a change that alters it is visible rather than discovered by a customer.

Strangle, do not replace

New capability goes into new code behind a boundary; the old system keeps running and keeps shrinking. There is no cut-over weekend, no parallel-run budget, and no point at which the company has two systems of record and no idea which one is right.

Make the operating cost visible

Most modernisation business cases fail at the investment committee because nobody can say what the current system costs to keep alive. We put a figure on it first: licences, specialist availability, incident hours, the changes that were not made because they were too risky.

Know when not to

Some systems should be left alone and documented well enough to survive their last maintainer. That is a legitimate outcome of the assessment, and it is cheaper than the alternative when the system is stable and the domain is not moving.

Questions

Do you write the code or advise on it?

Both, and usually in that order. We work inside the team for the first weeks so the model gets built against your real constraints, then hand it over. Engagements that stay advisory produce documents nobody applies.

Our stack is COBOL on a mainframe. Is that in scope?

Yes. Rule extraction and characterisation testing apply the same way; the tooling differs. What matters more than the language is whether anyone left understands the domain, and how quickly that is changing.

How do you measure whether the review model worked?

Change lead time, change failure rate and the proportion of changes that need a human reviewer. The last one is the honest signal: if it does not fall, the classification is not doing anything and we have added process for nothing.

Will this satisfy an auditor?

The provenance and classification records are built to be shown. Whether they satisfy your particular auditor depends on your regime, and we would rather look at that with you early than assert it here.

Start with the diagnosis.

Thirty minutes on how your team currently reviews, where the queue sits, and what a risk-class model would change. No deck, no follow-up sequence.

Book the call →