Full-Stack Development

Wanneer herschrijven vs doorbouwen?

De lastige vraag: refactor of rewrite? Een beslissingsboom voor technische leiders.

5 min lezen
Wanneer herschrijven vs doorbouwen?

## De eeuwige discussie: refactor vs rewrite

Elke team met groeiende technical debt komt op dit punt: moeten we dit fixen of opnieuw bouwen?

Wat is refactor vs rewrite?

Refactor Het verbeteren van interne code structuur zonder extern gedrag te veranderen.

Rewrite Het volledig opnieuw bouwen van een systeem of component.

De beslissingsboom

Stap 1: Is het systeem levensvatbaar?

Vragen: - Doet het systeem wat het moet doen? - Zijn gebruikers tevreden? - Is het business model bevestigd?

Als NEE: Rewrite is mogelijk. Als het product niet werkt, is het tech niet het probleem.

Als JA: Ga naar stap 2.

Stap 2: Is het architecture solide?

Vragen: - Zijn de kernabstractions goed? - Zijn de scheidingen van concerns logisch? - Is het data model juist?

Als NEE: Architecture refactor first. Probeer niet te rewrite zonder nieuwe architecture.

Als JA: Ga naar stap 3.

Stap 3: Hoeveel debt is er?

Vragen: - Percentage van code dat problematisch is - Impact op velocity (snelheid van nieuwe features) - Number of bugs per release

< 20% debt: Refactor 20-50% debt: Partial rewrite > 50% debt: Full rewrite kan nodig zijn

Stap 4: Wat zijn de business requirements?

Vragen: - Is er een deadline voor nieuwe features? - Is er budget en tijd voor rewrite? - Kan de business stilstand voor ontwikkeling?

Als dringend: Refactor in small steps Als ruimte: Plan rewrite

Wanneer refactor

Kies refactor als: - Architecture is fundamenteel goed - Debt is lokaal, niet systeem-breed - Team kent de code goed - Time-to-market is belangrijk - Budget is beperkt

Refactor strategie: - Boy Scout rule: laat de code schoner achter dan je hem vond - Strangler fig pattern: vervang stukje bij beetje - Test-driven refactor: schrijf tests eerst, dan refactor

Wanneer rewrite

Kies rewrite als: - Architecture is fundamenteel fout - Technology is verouderd (end-of-life) - Team kent code niet (originale developers vertrokken) - Business requirements veranderd fundamenteel - Technical debt remt ontwikkeling (>50%)

Rewrite strategie: - Parallel development (naast bestaand systeem) - Incrementele migratie - Feature parity check - Data migration plan

De valkuilen van rewrite

1. Tweede systeem effect

"De eerste keer maak je een mess, de tweede keer maak je iets dat niet werkt."

Oplossing: Bewust zijn van dit effect, humility hebben.

2. Te optimistische planning

Rewrites nemen altijd langer dan gepland.

Oplossing: Verdubbel je tijdinschatting.

3. Vergeten requirements

In de rush naar nieuw, vergeten we edge cases die in de oude code staan.

Oplossing: Documenteer oude systeem eerst (ADR, user flows, edge cases).

4. Business stagneert

Tijdens rewrite geen nieuwe features.

Oplossing: Parallell development of kleinere rewrites.

Praktisch voorbeeld: SaaS platform

Situatie: - 3 jaar oud platform - React (oude versie) + custom backend - 60% technical debt - Team klaagt over velocity - Nieuwe features nemen steeds langer

Opties:

1. Refactor in-place - Upgrade React stap voor stap - Refactor module voor module - Voortgang: ~70% van tijd kan nog nieuwe features - Tijd: 6-12 maanden

2. Partial rewrite - Nieuwe modules in Next.js - Oude modules langzaam migreren - Voortgang: ~40% van tijd kan nog nieuwe features - Tijd: 8-16 maanden

3. Full rewrite - Opnieuw bouwen in Next.js - Geen nieuwe features tijdens rewrite - Voortgang: 0% nieuwe features - Tijd: 12-24 maanden

Recommendation: Voor de meeste bedrijven is optie 2 (partial rewrite) het beste balance.

Rol van fractional CTO

Een fractional CTO helpt bij: - Architecture assessment - Debt impact analysis - Rewrite vs refactor beslissing - Migration planning - Team begeleiding tijdens transitie - Stakeholder management

Conclusie

Rewrite is niet zelden het antwoord. Meestal is een combinatie van: 1. Fundamentele architecture fixes 2. Strategische rewrites van probleem modules 3. Geleidelijke migratie

Key lessons: - Wees humility: het oude systeem werkt voor een reden - Plan x2 je tijdinschatting - Communicatie met stakeholders is cruciaal - Measure velocity voor en na

Meer weten?

Dit artikel geeft een overzicht, maar elke situatie is anders.

Bekijk onze diensten