Meten, niet gokken
Draai een statische analyse over de hele codebase. Je wilt weten waar de problemen zitten, niet vermoeden dat ze er zijn.
De demo werkt, de eerste klanten betalen, er is geld opgehaald. En nu ligt er een codebase waarvan niemand precies weet hoe hij in elkaar zit. Dat is geen falen — het is de normale uitkomst van snel bouwen. De vraag is wat je ermee doet.
Niet slechte code, maar code zonder samenhang.
Metingen op AI-gegenereerde code laten steeds hetzelfde zien: ongeveer anderhalf tot twee keer zoveel grote problemen als in met de hand geschreven code, en aanzienlijk meer beveiligingsfouten. Nog veelzeggender is de verhouding tussen geplakte en herschreven code: sinds AI-gereedschap gewoon werd, groeit het geplakte deel harder.
Dat is precies wat je verwacht van gereedschap dat optimaliseert voor werkende code in plaats van voor onderhoudbare code. Elke losse oplossing klopt; het geheel heeft alleen geen vorm. Dezelfde logica staat op vier plekken, met vier kleine verschillen.
Zolang jij de enige bent die eraan werkt, merk je dat nauwelijks. Zodra er een tweede persoon bijkomt, of jij zelf na drie maanden terugkomt, wordt het de rem waar iedereen het over heeft.
Vier signalen die eerder komen dan de eerste storing.
Het eerste signaal is dat kleine wijzigingen lang duren. Een knop verplaatsen zou een uur moeten zijn; als het een dag is, komt dat doordat je niet weet wat er nog meer aan die knop hangt.
Het tweede is dat niemand durft te verwijderen. In een codebase met samenhang gooi je met een gerust hart iets weg. In een codebase zonder samenhang laat je alles staan, omdat je niet kunt overzien wie het gebruikt. Dat is de reden dat deze projecten alleen maar groeien.
Het derde is dat dezelfde fout meerdere keren terugkomt. Je repareert hem op de plek waar hij opduikt, en drie weken later is hij er weer op een andere plek — omdat dezelfde logica op vier plaatsen staat.
Het vierde is dat het testen met de hand gebeurt. Zolang de enige manier om te weten of het werkt een rondje klikken is, blijft elke wijziging een risico dat iemand persoonlijk moet dragen.
Draai een statische analyse over de hele codebase. Je wilt weten waar de problemen zitten, niet vermoeden dat ze er zijn.
Welke delen raken elkaar en welke staan los? Wat los staat, kun je later aanpakken. Wat overal doorheen loopt, eerst.
Niet overal, wel op het pad dat geld oplevert. Zonder die tests is elke herbouw een gok.
Van buiten naar binnen, en nooit alles tegelijk.
Begin bij de randen waar geld of gegevens langsgaan: inloggen, rechten, betalen, gegevensopslag. Dat is waar een fout je klanten kost in plaats van je tijd. Die delen mogen saai en degelijk worden, ook als de rest dat nog niet is.
Werk daarna naar binnen, per gebied, met een werkende app na elke stap. De verleiding om alles in één keer op te trekken is groot en het is de manier waarop teams drie maanden stilvallen zonder dat er iets te laten zien is.
Laat de schermen voor het laatst. Die zien er vaak het slechtst uit onder de motorkap en ze doen het meestal prima. Ze zijn ook het makkelijkst te vervangen als je later toch een andere kant op wilt.
Zonder cijfers is opruimen een gevoel.
De bruikbaarste maat is hoe lang het duurt voordat een wijziging bij de klant is. Niet hoe lang het bouwen kost, maar de hele weg van idee tot live. Als die tijd na twee maanden opruimen niet korter is geworden, ruim je de verkeerde dingen op.
Een tweede maat: hoeveel van de wijzigingen die live gaan, moeten binnen een week worden hersteld. Dat cijfer zegt meer over de staat van je codebase dan welk kwaliteitsrapport ook, en je hoeft er niets voor te installeren.
Wat je bewust níet als maat neemt: het aantal opmerkingen in een analysehulpmiddel. Dat getal daalt door dingen op te lossen die niemand raakt, en het geeft een gevoel van vooruitgang dat niet met de werkelijkheid meebeweegt.
Twee dingen kosten in deze fase het meest. Het eerste is de gegevensstructuur: als de tabellen niet passen bij wat het product inmiddels doet, sleep je die mismatch mee in alles wat je erbovenop bouwt. Dat is het enige onderdeel waarvan we zouden zeggen: doe het nu, hoe vervelend ook.
Het tweede is de plek waar je platform je vasthoudt. Een MVP die op één bouwplatform is gemaakt, draagt aannames van dat platform mee — over hoe je gegevens opslaat, hoe je gebruikers beheert, hoe je uitrolt. Zolang je daar blijft, is dat prima. Wil je eruit, dan blijkt hoeveel van je app eigenlijk van hen was.
Wat zelden de moeite waard is: een andere programmeertaal, een ander framework, een andere hostingpartij. Dat voelt als vooruitgang en het lost geen enkel probleem op dat je klanten merken.
Niet als schuld die moet worden afbetaald, maar als de prijs van de snelheid waarmee je het bewijs hebt geleverd. Zonder die snelle demo was er niets om in te investeren geweest.
Wat je wél wilt laten zien: dat je weet waar het zit. Een lijst met gebieden, wat er per gebied misgaat en wat het kost om het aan te pakken, is een beter gesprek dan een belofte dat het meevalt. Investeerders die vaker software hebben gezien, verwachten dat lijstje en worden nerveus als het er niet is.
Er is geen vast percentage, en iedereen die er een noemt, gokt. Wat we in de praktijk zien: de randen rond gegevens en betalen bijna altijd, de schermen bijna nooit.
Voor een deel wel. Wat niet kan wachten is de gegevensstructuur en alles rond rechten, omdat elke functie die je erbovenop zet de fout vermenigvuldigt.
Voor deze fase is inhuren vaak sneller, omdat het werk een duidelijk einde heeft. Voor daarna wil je iemand die blijft; degene die opruimt kent de codebase daarna beter dan jij.
Dan begin je met lezen en meten in plaats van met bouwen. Reken op een paar weken waarin er niets zichtbaars gebeurt en er wel een beeld ontstaat.
Zelden, en bijna nooit zo vroeg. Een herbouw duurt altijd langer dan gedacht en levert een product op dat precies doet wat het oude deed, terwijl je klanten ondertussen wachten.
Niet door langzamer te bouwen, maar door tijdens het bouwen bij te houden welke keuzes je bewust uitstelt. Een lijst van twintig regels is genoeg om later gericht terug te komen.
In een bouwdag ontsluiten we één systeem met leesrechten en bouwen we een assistent die er vragen over beantwoordt. Dan weet je of het idee hout snijdt.
Een korte intake volgt na je inschrijving. Daarna stemmen we scope en datum af.
We nemen contact op om de intake in te plannen.
We gebruiken cookies om je ervaring te verbeteren en het gebruik van de site te meten.