Software
13 minuten

Software herbouwen of behouden? De beslisgids voor organisaties

Software herbouwen (het van de grond af opnieuw ontwikkelen van een bestaand systeem) is een ingrijpende keuze die tijd, geld en doorzettingsvermogen vergt. Voor niet-technische beslissers, product owners en projectmanagers is het daarom belangrijk om de signalen van een versleten of remmend systeem te herkennen, maar ook om te weten wanneer bijsturen of gedeeltelijk verbeteren beter is dan compleet opnieuw beginnen. In dit blog helpen we je beoordelen of en wanneer je je huidige software(landschap) moet herbouwen. 

Ontwikkelaar van Wux werkt aan het herbouwen en optimaliseren van bedrijfssoftware.

Geschreven door Remco Thijssen

Zwaaiende emoji

Remco Teamlead software

Meer over Remco

Inhoudsopgave

Niet blindelings herbouwen

De gedachte aan een frisse start met een nieuw systeem is verleidelijk. Weg met de oude spaghetti-code, de talloze patches en noodoplossingen. Eindelijk een schone lei. Maar een herbouw is geen magische resetknop. 

Alles wat in je bestaande software aan functionaliteit, bugfixes en gebruikerswensen is opgebouwd, moet je in het nieuwe systeem weer zien te bereiken. Hier hangt dus ook best wat risico aan: herbouwprojecten duren vaak langer dan gepland, kosten meer dan begroot en brengen het gevaar mee dat je tijdens de bouw tijd verliest waarin je concurrenten wel vooruitgaan. 

Een volledig nieuw systeem betekent bovendien dat je huidige operatie ergens in het proces moet overschakelen. Dat moment moet je heel zorgvuldig plannen om verstoringen te voorkomen. Software herbouwen is dus zeker geen lichte beslissing. Denk er goed over na en zorg dat je echt duidelijke redenen hebt voordat je de sprong waagt.

Signalen dat je software toe is aan herbouw

Wanneer is het dan wel tijd om serieus een herbouw te overwegen? Er zijn een aantal veelvoorkomende signalen en pijnpunten die erop wijzen dat je huidige softwaresysteem zijn houdbaarheidsdatum bereikt. Als je meerdere van deze signalen herkent in jouw organisatie, is het misschien tijd om een herbouwtraject te starten:

Code die niet meer tegen een stootje kan

Je voert een kleine aanpassing of update door en plotseling duikt er ergens anders in het systeem een nieuwe bug op. Het voelt alsof je applicatie een wankel kaartenhuis is: één verschuiving en er ontstaan scheuren. Dit wijst op hoge technische schuld en een fragiele codebasis. 

Je ontwikkelteam is langer bezig met brandjes blussen dan met nieuwe functionaliteit bouwen. Continu moeten repareren wat door een vorige wijziging kapot ging, is een duidelijk teken dat de architectuur niet deugt en dat lapmiddelen niet langer volstaan.

Traagheid die steeds duurder wordt

Moet je klant of medewerker steeds wachten tot de applicatie eindelijk geladen is? Of loopt de performance terug naarmate er meer gebruikers of data bijkomen? Verouderde systemen draaien vaak op inefficiënte code of oude infrastructuur, waardoor ze traag aanvoelen en slecht opschalen bij groei. 

In een tijd waarin iedereen direct resultaat verwacht, kan zulke traagheid funest zijn. Als optimalisaties niet meer baten en de bottleneck in de basis van het systeem zit, is een herbouw met moderne, snellere technologieën te overwegen.

Een systeem dat nergens meer bij past

Je wilt graag een moderne tool of een andere applicatie koppelen aan je systeem, maar het blijkt een nachtmerrie omdat je software geen API’s heeft of gebouwd is op een verouderd platform. Misschien ben je afhankelijk van een oude programmeertaal of database waar nog maar weinig mensen kennis van hebben. 

Dit soort technologische blokkades beperken je bedrijfsvoering ernstig. Als jouw systeem voelt als een eiland dat niet aangesloten kan worden op de rest, of als je voor elke wijziging dieptekennis van “oude techniek” nodig hebt die schaars is, dan is dat een sterk signaal. Je loopt het risico dat op termijn niemand de applicatie nog kan onderhouden of dat deze niet meer werkt met nieuwe systemen. Dan is het tijd om te moderniseren via herbouw.

Software die je tegenwerkt in plaats van helpt

Bedrijfsprocessen evolueren, maar software verandert niet altijd mee. Misschien zijn er door de jaren heen allerlei workarounds ontstaan: exporteren naar Excel om simpele dingen te doen die de software zelf niet ondersteunt, of extra controles buiten het systeem om omdat het daarin niet kan. 

Als je merkt dat het systeem eerder een hindernis is dan een hulpmiddel, omdat het jullie dwingt om omslachtig te werken en niet meer aansluit bij jullie huidige manier van werken, dan loop je tegen de grenzen van het ontwerp aan. 

Natuurlijk kun je proberen nieuwe features toe te voegen, maar als de gewenste functionaliteit eigenlijk vraagt om een geheel andere opzet, is herbouwen vaak verstandiger dan eindeloos patchen.

De prijs van blijven plakken

Kijk eens naar de tijd en het geld dat je kwijt bent aan software onderhoud. Moeten er ieder kwartaal (of zelfs maandelijks) forse bedragen of veel uren in het systeem gestoken worden, alleen om het draaiende te houden? 

Oude software kan een geldverslindende valkuil worden. Zeker als je merkt dat ontwikkelaars steeds langer nodig hebben om eenvoudige aanpassingen te doen, of als je dure experts moet inschakelen omdat zij de enigen zijn die de legacy-code nog begrijpen. Stijgende onderhoudskosten die structureel worden, betekenen vaak dat het fundament van je software niet langer kostenefficiënt is. Op een gegeven moment is nieuwbouw goedkoper dan het blijven plakken van pleisters.

Teamleden van Wux bespreken de aanpak voor het vernieuwen van bestaande software.

Bouwdrang bedwingen: Wanneer je beter nog niet herbouwt

Ondanks bovenstaande signalen zijn er ook situaties waarin een herbouw (voorlopig) niet de juiste keuze is. Het is belangrijk om niet blind in een rebuild-project te duiken zonder de context af te wegen. Enkele scenario’s waarin je de drang om helemaal opnieuw te beginnen juist moet bedwingen zijn als volgt:

Geen voordeel? Geen herbouw

Herbouw moet in dienst staan van je bedrijfsstrategie. Vraag jezelf af wat een nieuw systeem concreet oplevert voor de organisatie, behalve “modernere code”. Alleen herbouwen om de techniek te vernieuwen, zonder dat het nieuwe systeem extra waarde biedt (bijvoorbeeld nieuwe mogelijkheden, hogere klanttevredenheid, lagere kosten op termijn), is meestal zonde. 

Techniek om de techniek is geen geldige reden voor zo’n grote investering. In dat geval kun je beter kijken naar kleinere optimalisaties of afwachten tot er wél een strategische noodzaak is.

Soms is niets doen de slimste keuze

Never change a winning team, luidt het gezegde. Als jouw huidige software eigenlijk nog uitstekend functioneert, de performance goed is en nieuwe features zonder al te veel moeite ingebouwd kunnen worden, waarom zou je dan alles vervangen? Soms is een systeem verouderd onder de motorkap, maar draait het nog als een zonnetje. 

In zo’n situatie kun je jezelf veel tijd en geld besparen door niet direct te gaan herbouwen. Misschien is een grondige refactor of upgrade van bepaalde componenten voldoende om weer een paar jaar vooruit te kunnen.

Herbouw zonder rugdekking is vragen om problemen

Een herbouwtraject vereist een stevige inzet van je hele organisatie en ook de betrokkenheid van management en gebruikers is hierbij cruciaal. Is er weinig draagvlak of ontbreken de mensen en middelen om het project te ondersteunen, dan is de kans op een mislukking groot. 

Zonder intern momentum (een gevoel van urgentie en een team dat er vol voor wil gaan) kun je beter wachten. Probeer eerst het bewustzijn te vergroten over de knelpunten van het huidige systeem. Als iedereen de pijn voelt, wordt het makkelijker om straks een herbouw te rechtvaardigen en succesvol uit te voeren.

Herbouwen of refactoren: Je opties afwegen

Misschien herken je wel enkele knelpunten in je huidige software, maar twijfel je of een volledige herbouw nodig is. Vaak is het verstandig om de alternatieven te verkennen voordat je besluit de oude codebase compleet te vervangen. Refactoren (het intern verbeteren en herstructureren van de bestaande code) of moderniseren (bijvoorbeeld door modules stapsgewijs te vernieuwen) kunnen levensvatbare opties zijn, afhankelijk van de situatie.

Een refactor-aanpak houdt in dat je de huidige software verder ontwikkelt en oplapt waar nodig, zonder alles in één keer weg te gooien. Dit heeft als voordeel dat je minder risico neemt: je behoudt bewezen onderdelen en gebruikers kunnen vaak gewoon doorwerken tijdens de verbeteringen. Stapsgewijze verbeteringen kosten meestal ook minder en leveren sneller resultaat op. 

Refactoren is ideaal als de basis van het systeem nog goed is, maar de kwaliteit van de code of bepaalde onderdelen te wensen overlaat. Denk aan het herstructureren van rommelige code, het verbeteren van de user interface of het upgraden van de database. Dit alles zonder de kernlogica omver te werpen.

Toch schiet refactoren tekort wanneer de onderliggende software architectuur simpelweg niet meer past bij wat je nodig hebt. Als je systeem bijvoorbeeld op een verouderd software platform draait dat niet cloud-ready is, of als de structuur zo monolithisch is dat uitbreiden nagenoeg onmogelijk wordt, dan is pleisters plakken geen duurzame oplossing. 

In dat geval moet je misschien de knoop doorhakken en kiezen voor herbouw. Bij een herbouw krijg je de kans om het ontwerp vanaf nul te optimaliseren en gebruik te maken van de nieuwste technologieën. Je kunt alle lessen uit het oude systeem meenemen en zaken fundamenteel anders (en beter) inrichten.

De keuze tussen refactoren en herbouwen is dus een afweging tussen evolutie en revolutie. Soms is een combinatie mogelijk: bijvoorbeeld een deel van het systeem vernieuwen (herbouw van een module) terwijl de rest voorlopig blijft draaien. Het komt erop neer dat je goed kijkt naar de ernst van de problemen en de gewenste doelen. Een betrouwbare IT-partner kan helpen bij het beoordelen van je legacy-systeem en het uittekenen van de opties, zodat je een weloverwogen besluit kunt nemen.

Developer van Wux werkt enthousiast aan het herbouwen en verbeteren van bedrijfssoftware.

Hoe je slim herbouwen strategisch aanpakt

Heb je besloten om (gedeeltelijk) te gaan herbouwen? Dan is het zaak om het slim en strategisch aan te pakken, zodat de kans op succes zo groot mogelijk is en de overgang soepel verloopt. Enkele tips om een herbouwproject in goede banen te leiden:

De blauwdruk vóór je begint met bouwen

Voordat je ook maar één regel nieuwe code schrijft, moet het glashelder zijn wat je nieuwe systeem allemaal moet doen. Neem de tijd om je huidige software volledig in kaart te brengen: welke functies zijn er, welke data stroomt erdoor, welke software koppelingen bestaan er, en waar zitten de pijnpunten? Betrek hierbij de gebruikers van het systeem. Zij weten als geen ander wat er in de dagelijkse praktijk werkt of mist. 

Daarnaast definieer je de gewenste situatie: wat moet het nieuwe systeem kunnen wat het oude niet (goed) kan? Misschien kunnen sommige verouderde functies vervallen of vereenvoudigd worden, terwijl andere helemaal opnieuw ontworpen moeten worden voor de huidige behoeften. Door deze inventarisatie voorkom je dat je straks belangrijke features vergeet of onnodig tijd steekt in onderdelen die eigenlijk overbodig zijn.

Elke grote herbouw begint met iets kleins

Begin bijvoorbeeld met een MVP (Minimum Viable Product) of kernmodule die essentiële functionaliteit biedt. Een veelgemaakte fout bij herbouw is willen beginnen met “het hele systeem” in één keer. Het is slimmer om klein te starten, met een MVP of een kernmodule die essentiële functionaliteit biedt. Kies bijvoorbeeld de module die de meeste pijn veroorzaakt in het oude systeem, of een onderdeel dat relatief zelfstandig werkt en veel waarde oplevert als het vernieuwd is. 

Door je herbouw op te knippen in deelprojecten, houd je het overzichtelijk en kun je sneller iets opleveren dat bruikbaar is. Succesvolle kleine releases geven het team en de stakeholders vertrouwen dat het project de goede kant op gaat. Bovendien kun je van elke fase leren en die inzichten meenemen in volgende fases. Stap voor stap herbouwen zorgt ervoor dat je niet pas na jaren resultaat ziet, maar geleidelijk verbetering merkt.

Modulair bouwen is toekomstbestendig bouwen

Waar oudere software vaak één groot blok was, is het tegenwoordig verstandig om je nieuwe systeem modulair op te zetten. Denk in losse componenten of microservices die elk een afgebakende taak hebben. Die componenten laat je met elkaar praten via duidelijke API’s. Dit API-first principe betekent dat je vanaf het ontwerp nadenkt over hoe onderdelen met elkaar en met de buitenwereld koppelen. 

Het voordeel is dubbel: intern kun je makkelijker onderdelen wijzigen of vervangen zonder het hele systeem om te gooien, en extern is je software meteen klaar om te integreren met andere tools en diensten. Een modulair, API-gericht ontwerp maakt je nieuwe systeem veel flexibeler en toekomstbestendiger. Het voorkomt dat je over een paar jaar weer vastzit aan een inflexibel geheel, omdat je nu bouwt met uitbreidbaarheid in gedachten.

Je nieuwe systeem is niets zonder veilige overstap

Een van de spannendste onderdelen van een herbouw is de migratie van data en het moment van overschakelen. Niets is zo belangrijk als de continuïteit van je bedrijfsvoering en het behouden van alle waardevolle gegevens. 

Maak daarom vroegtijdig een gedetailleerd datamigratieplan: hoe ga je alle bestaande data overzetten naar het nieuwe systeem, in welke stap(pen) en met welke tools? Ga je in één keer over, of kies je voor een periode waarin oud en nieuw naast elkaar draaien? Test de migratieprocedure uitvoerig op een proefset gegevens, zodat je zeker weet dat alles straks correct en compleet overkomt. Daarnaast is het cruciaal om fallback-scenario’s te hebben: wat doe je als er iets misgaat bij de livegang van de nieuwe software? Misschien hou je de oude applicatie nog standby als noodoplossing of kun je bij problemen snel terugvallen op een vorige versie. Door dit vooraf te bedenken, voorkom je paniek op het moment suprême. Communiceer ook duidelijk naar de gebruikers wat er gaat gebeuren en wanneer, zodat zij zijn voorbereid. Met een doordacht migratie- en uitrolplan zorg je ervoor dat de overgang naar het nieuwe systeem zo soepel mogelijk verloopt, zonder dat de business stilvalt.

Het developmentteam van Wux overlegt over strategische keuzes rond softwareherbouw.

Succes begint bij de juiste beslissing

Bestaande software herbouwen is een flinke operatie, maar soms onvermijdelijk om een volgende stap te kunnen zetten. We hebben gezien dat er duidelijke signalen zijn (variërend van voortdurende bugs en traagheid tot hoge kosten) die aangeven dat je huidige systeem tegen zijn grenzen aanloopt. Tegelijk is herbouw geen doel op zich: als je met kleinere ingrepen of refactoring uit de voeten kunt, verdient dat vaak de voorkeur. Het komt erop neer dat je scherp kijkt naar de balans tussen de pijn van het oude en de belofte van het nieuwe.

Mocht je besluiten om te herbouwen, pak het dan doordacht aan. Een strategische aanpak met oog voor functionaliteit, gefaseerde uitvoering, moderne architectuur en zorgvuldige migratie maakt het verschil tussen een succesvol nieuw begin en een frustrerend avontuur. Uiteindelijk wil je software die je organisatie ondersteunt in plaats van tegenwerkt, nu en in de toekomst.

Wil je weten of herbouw voor jullie de juiste stap is? We sparren graag vrijblijvend met je mee.

Remco Thijssen Teamlead software

Meer over Remco

Ik heb de opleiding Applicatie en mediaontwikkelaar niveau 4 gevolgd bij Gildeopleidingen in Venray. Daarnaast ben ik momenteel aan het afstuderen aan de HAN voor de opleiding HBO-ICT in Arnhem. Dit is een deeltijdopleiding die ik volg naast mijn werk bij Wux. Ik werk sinds 2021 bij Wux als back-end developer. Hier ben ik als stagiaire begonnen. Ondertussen ben ik doorgegroeid en heb ik meerdere functies zoals back-end developer en projectmanager. Dit betekent dat ik alles wat ik tijdens mijn studie leer kan toepassen in mijn werk, maar ook veel praktijkervaring op doe naast de theorie. Ik pak complexe problemen aan en ben altijd op zoek naar de beste oplossing. Dit doe ik door mijn kennis die ik heb opgedaan toe te passen en up to date te blijven met de nieuwste technieken.