Modernize without standing still. Step by step, while everything keeps running.
Rewrites fail. Standing still does too. I modernize grown systems in small, always reversible steps: operations keep running, the team keeps shipping features, and the first measurable results arrive in weeks rather than in two years.
An assessment with a risk and dependency map of your system
A modernization plan in steps that each deliver value on their own
Implementation while everything keeps running, every step individually reversible
Test coverage and a pipeline, so the progress does not decay again
Scope & working together
The assessment is a self-contained two to three week engagement. Modernization then runs in stages, pausable at any time without leaving anything half finished.
Remote from Germany. Straight with me, no agency in between.
The starting point
Nobody wants to touch it. Everybody depends on it.
Legacy rarely means old. Legacy means changes are expensive, risky and hard to predict. There are no tests that inspire confidence, no documentation that is accurate, and the knowledge about the critical parts lives in two people’s heads.
The obvious answer, rebuilding everything, is the most expensive one. A rewrite competes with day-to-day business for two years, has to reproduce behaviour nobody fully understands any more, and delivers no value until the switchover. So I work differently: the old system stays in operation and gets retired piece by piece.
Typical symptoms
A language or framework upgrade has been overdue for years.
A change in one place breaks something in another.
Deployments are a manual procedure with a checklist.
Security updates are blocked because dependencies are out of date.
New developers need months to make their first meaningful commit.
Features get estimated and the estimate is never right.
What I do
Secure it. Retire it. Hand it over.
01
An assessment built on facts
Code analysisRisk mappingDependencies
I read the code, the database, the deployments and the incident history. Out of that comes a map: what is business critical, what is genuinely broken, what looks worse than it is. Ranked by risk and business value, not by how pretty the code is.
02
A safety net before the first change
TestingCI/CDDockerStatic analysis
Before anything gets changed, protection goes in: characterization tests for the critical paths, a reproducible environment, and a pipeline that finds errors before customers do. No net, no rebuild.
03
Strangler fig instead of big bang
Strangler figRoutingFeature flags
New functionality grows alongside the old system and traffic moves across gradually. Every step is small, measurable and reversible. If something does not work we turn it back, without a project crisis and without a crisis meeting.
04
Changing platform without interrupting operations
AWSDMSECSTerraform
Databases move with replication and switchover windows measured in minutes, applications get containerized, infrastructure lives in Terraform. Every step has a rollback path, rehearsed before it is needed.
05
Knowledge back into the team
PairingADRsHandover
I work in pairs and document decisions where people will actually look for them. At the end your team should be able to carry on, rather than having to book me again.
Because in most cases it fails. It competes with day-to-day business for years, has to reproduce undocumented behaviour, and delivers no value until the switchover. Retiring step by step is less spectacular, but it delivers earlier and can be stopped at any point. I have written up the reasoning in more detail in a separate article.
Can we still ship features during the modernization?+
Yes, and that is part of the approach. New functionality preferably gets built in the new part of the system. That way every feature pays into the modernization instead of competing with it.
How long does something like this take?+
It depends on size and condition. What is defensible: an assessment in two to three weeks, first measurable results from week four. After that the modernization runs in steps whose order you can change or pause at any time.
What if we have no tests?+
That is the normal case. The first step is then characterization tests: they capture what the system does today, not what it ought to do. That gives you a net that makes behaviour changes visible before anyone touches the code.
Is there a quick first assessment?+
Yes. The free system check is a structured questionnaire covering release capability, safeguards, knowledge distribution and technical debt. You get a PDF report with a risk assessment and recommended actions, with no sales call attached.
Diese Website nutzt Google Analytics, um den Besuch anonym auszuwerten. Ihre Daten werden nur nach ausdrücklicher Einwilligung erhoben.Datenschutzerklärung