All services
Service · Legacy modernization

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.

Strangler figPHP 8 & GolangZero downtime
What you get
  • 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.

A system nobody wants to touch any more?

Let’s spend 30 minutes on the first step.

Book a call
Book a call
How it runs

No deadline with an open outcome.

Every step delivers value on its own and can be turned back. There is no moment where everything has to work at once.

STEP 01

A read in 30 minutes

Age, size, language version, what is blocking right now. After that you know whether an assessment makes sense.

STEP 02

Assessment, 2–3 weeks

Code, data, deployments and incidents. The result: a risk map and a modernization plan in steps.

STEP 03

Secure and retire

Tests and pipeline first, then the first cut. From week four the results are measurable.

STEP 04

Handover

Documented decisions, pairing, and an order for the steps your team takes on its own.

The outcome

What changes afterwards.

Room to move again

Changes to the system become plannable. What used to be a risk turns into a ticket.

No standstill

The business keeps running throughout. No frozen backlog, no switchover day with an open outcome.

Results in weeks

The first visible progress arrives in weeks rather than quarters, because each step delivers value on its own.

Technologies I use

Proven tools. No experiments.

Languages
  • PHP 8
  • Symfony
  • Golang
  • SQL
Migration
  • Strangler fig
  • AWS DMS
  • Blue/green
  • Feature flags
Platform
  • AWS
  • Docker
  • Kubernetes
  • Terraform
Quality
  • PHPUnit
  • Static analysis
  • CI/CD
  • Monitoring
From practice
Common questions

Before you ask.

Why not a complete rewrite?

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.

Other services

What else I help with.