legacy code archeologie / legacy code archaeology
Oude software sterft zelden netjes. Maar ze vertelt altijd haar verhaal — als je weet hoe je moet luisteren.
Old software rarely dies cleanly. But it always tells its story — if you know how to listen.
voor cto's die weten wat ze hebben / for ctos who know what they're sitting on
De domeinkennis zit nog in de code. Ze wacht alleen op iemand die geduldig genoeg is om te luisteren.
The domain knowledge is still in the code. It's just waiting for someone patient enough to listen.
het verhaal / the story
Ergens in de jaren negentig zat ik naast een stoffig kabinet in een fabriek, met een zelfgebouwd apparaatje dat Diablo-printercommando's las en ze doorstuurde naar een laserprinter. De mainframe dacht dat hij naar een daisywheel printer schreef. De laserprinter dacht dat hij gewoon zijn werk deed. En de fabriek draaide gewoon door.
Somewhere in the nineties I was sitting next to a dusty cabinet in a factory, with a home-built device that read Diablo daisy-wheel printer sequences and quietly redirected them to a laser printer. The mainframe thought it was talking to its old printer. The laser printer thought it was doing its normal job. The factory kept running. Nobody needed to know. The bridge just had to work.
Sindsdien heb ik die kloof keer op keer teruggevonden. Industriële besturingssystemen die met pc-software moesten praten. Elektronenmicroscopen die nieuwe beeldsensoren kregen maar oude aannames meebrachten. Firmware die hardware aanstuurde die niet meer bestond. Overal hetzelfde patroon: waardevolle kennis, ingesloten in iets wat niemand meer begrijpt.
Since then I've found that same gap everywhere. Industrial control systems that needed to talk to PC software. Electron microscopes getting new image sensors but carrying old assumptions. Firmware driving hardware that no longer existed. Everywhere the same pattern: valuable knowledge, locked inside something nobody understands anymore. The knowledge doesn't disappear when the system ages. It just gets harder to read.
De kloof tussen wat bestaat en wat nodig is — daar voel ik me thuis.
The gap between what exists and what's needed — that's where I feel at home.
wat we doen / what we do
Read the codebase
Code, git history, bug trackers. Triangulate intent from behavior. Map what the system knows about itself.
Separate: what stays, what goes
Identify the oak beams in the condemned building. Domain logic worth preserving. Accidental complexity worth demolishing.
Distill specs from behavior
Extract implicit requirements from observed behavior. Build a specification from what the system does, not what anyone remembers wanting.
Pour a new foundation
Build fast on solid ground. The archaeology is the slow part. The construction, finally, can move.
waarom dit anders is / why this is different
Wat we bergen uit de sloop wordt het fundament voor iets nieuws — snel gebouwd, omdat het fundament dit keer eerlijk is.
What we salvage from the demolition becomes the foundation for something new — built fast, because this time the foundation is honest.