Er komt een moment waarop iemand het zegt. Meestal is het een nieuwe CTO, soms een leverancier die net binnen is, en heel af en toe zijn wij het zelf: we moeten dit opnieuw bouwen. Het klinkt daadkrachtig, het is makkelijk uit te leggen aan een directie, en het is in de meeste gevallen de duurste keuze op tafel.
Wat er in dat oude systeem zit
Een systeem dat vijf of tien jaar draait bevat twee dingen. Het eerste is code, en die is meestal inderdaad niet mooi. Het tweede zijn de uitzonderingen: die ene klant met eigen prijsafspraken, dat ordertype dat anders geboekt wordt, de correctie die elke maandagochtend draait omdat een koppeling ooit eens iets dubbel doorstuurde.
Die uitzonderingen staan nergens opgeschreven. Ze zitten in de code, en vaak alleen daar. Bij een herbouw ontdek je ze opnieuw, één voor één, en meestal op het moment dat het nieuwe systeem al live staat en iemand belt dat zijn factuur niet klopt.
Wij hebben dat een paar keer van dichtbij gezien. Niet omdat de bouwers niet konden bouwen, maar omdat ze niet konden weten wat ze niet wisten.
Wat we in plaats daarvan doen
We vervangen in stukken, terwijl het oude blijft draaien. Dat gaat zo:
- We meten eerst wat er echt gebruikt wordt. In elk systeem zit functionaliteit waar in twee jaar niemand op geklikt heeft, en die hoef je niet opnieuw te bouwen.
- We knippen er één stuk uit dat op zichzelf staat. Een portaal, een koppeling, de facturatie.
- Dat stuk bouwen we nieuw, ernaast, en we laten het oude systeem het aanroepen.
- Werkt het, dan gaat het volgende stuk. Werkt het niet, dan zetten we één stuk terug in plaats van een heel jaar werk.
Na een tijdje merk je dat er van het oude nog maar weinig over is. Dat moment komt later dan bij een herbouw, maar je bent onderweg nooit een half jaar zonder werkend systeem geweest.
Wanneer herbouwen wél klopt
Er zijn uitzonderingen, en het zijn er minder dan mensen denken:
- De techniek krijgt geen beveiligingsupdates meer en er is geen pad naar een versie die dat wel doet.
- Het systeem doet iets fundamenteel anders dan wat het bedrijf nu nodig heeft. Dan bouw je geen nieuwe versie, dan bouw je iets anders.
- Er is niemand meer die de taal of het framework kent, ook niet in te huren.
Merk op dat "de code is een zooitje" er niet bij staat. Dat is een reden om op te ruimen, niet om opnieuw te beginnen.
Waar het gesprek meestal op vastloopt
Bij een herbouw weet je vooraf wat het kost en krijg je één datum. Dat is prettig voor een begroting. Bij vervangen in stukken krijg je een reeks kleinere bedragen en werkt het na een paar weken al deels beter.
Die eerste vorm voelt zekerder. Ze is het niet: van alle projecten die uitlopen zijn herbouwprojecten de kampioen. Je hebt de zekerheid van een datum ingeruild voor de zekerheid dat de uitzonderingen er nog aan komen.
Twijfel je in welke staat je software verkeert, dan is een codescan meestal het goedkoopste antwoord: twee weken lezen, en daarna weet je waar je aan toe bent. Ook als je daarna bij iemand anders verder bouwt.