Legacy-code modernisering
Legacy code is bijna nooit het echte probleem. Het probleem is dat niemand meer weet wat het systeem op dit moment doet. Ik werk vanuit het draaiende systeem: gedrag vastleggen met tests, en daarna bewust veranderen, in kleine stappen die je kunt terugdraaien.
Gevestigd in Groningen, werkzaam door heel Nederland en op afstand voor klanten wereldwijd.
Refactoring en modernisering van oudere codebases. Framework-upgrades, zorgvuldige test-gedreven aanpassingen en migraties van end-of-life-platforms.
Legacy code is zelden het oorspronkelijke probleem. Het werk zit in begrijpen welk gedrag het huidige systeem werkelijk heeft, en dat dan veranderen zonder de delen kapot te maken die niemand heeft gedocumenteerd.
Geschikt voor
- Framework- of runtime-upgrades (Node, Python, Java, Rails, Delphi en frameworks voorbij EOL).
- Monolieten die opgesplitst moeten worden zonder volledige herbouw.
- Overgenomen codebases waarvan het oorspronkelijke team weg is.
Mijn aanpak
- Eerst het huidige gedrag vastleggen. Voordat ik iets verander, leg ik met characterization tests vast hoe het systeem zich vandaag gedraagt. Modernisering mag niet stilletjes veranderen waar het bedrijf op leunt.
- In stappen. Grote herbouwprojecten lopen nogal eens uit en leveren laat op. Daarom migreer ik per module, scherm of koppeling, terwijl het systeem gewoon blijft draaien.
- Kennis blijft in huis. Onderweg documenteer ik wat het oude systeem werkelijk doet, wat vaak nergens op papier staat. Zo word je minder afhankelijk van één persoon, ook van mij.
Werk dat ik kan laten zien
- go-catdoc. Om een documentformaat uit de jaren negentig te lezen vanuit een moderne Go-service heb ik de C-tool catdoc via WebAssembly binnen Go laten draaien, zonder C-toolchain bij het bouwen. Bekijk op GitHub.
- Van Delphi naar web. Voor een winkelautomatiseringsplatform verving ik een Delphi-applicatie volledig door een Go-backend met een Svelte-frontend.
Tech die ik gebruik
Characterization tests, contract tests, geleidelijke TypeScript-adoptie, monorepo-migraties, dependency-upgrades, Delphi- en Pascal-modernisering.
Veelgestelde vragen
Kun je werken met Delphi- of Pascal-codebases?
Ja. Modernisering kan variëren van stapsgewijze refactoring binnen Delphi tot volledige migratie naar een moderne webstack. De juiste route hangt af van hoeveel businesslogica in de UI-laag zit.
Blijft de applicatie werken tijdens de migratie?
Ja. Veranderingen gaan in kleine, omkeerbare stappen, met eerst characterization tests, zodat het draaiende systeem zijn gedrag behoudt terwijl onderdelen erachter worden vervangen.
Wat als er helemaal geen tests zijn?
Dat is eerder regel dan uitzondering. De eerste fase voegt meestal genoeg characterization tests toe rond de delen die we gaan veranderen, zodat verder werk veilig is. Volledige testdekking is zelden het doel; veilig-veranderbaar wel.
Herbouwen of refactoren?
Meestal refactoren, soms een onderdeel herbouwen, zelden het hele systeem. Het eerlijke antwoord volgt uit de staat van de code, de testdekking en hoe lang het huidige platform nog houdbaar is, en precies dat brengt een korte audit in kaart.
Even sparren?
Vertel me wat je wilt bereiken. Ik laat eerlijk weten of ik een goede match ben.
Neem contact opAndere diensten
- Maatwerk applicaties Volledige ontwerp- en ontwikkeltrajecten voor maatwerk applicaties, op het web, native iOS en backend, inclusief MVP-builds voor early-stage producten.
- Web-, API- en backend-ontwikkeling Productie-websites, webapplicaties en APIs in React, Preact, Svelte en vanilla web. Backends in Go en Python met REST of event-driven APIs.
- AI- en LLM-integraties LLM-functionaliteit voor bestaande apps en nieuwe producten: agent-workflows, RAG-pipelines en integraties met OpenAI, Anthropic en vergelijkbare providers.
- Native iOS-apps Native iPhone- en iPad-apps in Swift en SwiftUI, inclusief widgets, Live Activities en App Store-oplevering.
- Browserextensies en integraties Chrome-extensies, Thunderbird-add-ons en integraties tussen browsers en externe diensten.
- Kassasoftware en retail Maatwerk POS-systemen, voorraadbeheer en integraties met bonprinters en andere winkelhardware.
- Performance-kritieke engineering Algoritmes, audio- en videobewerking, codec-werk, P2P-netwerken en andere engineering-diepe projecten waar prestatie en correctheid tellen.