De meeste MVP-audits leveren een document op. Een nuttige levert beslissingen op: wat brandt, wat kan wachten en wat het kost om het te herstellen.
Een technische MVP-audit beantwoordt één vraag: kan deze codebase de komende twaalf maanden van het bedrijf dragen, en zo niet, wat moet er precies veranderen? Al het andere — tooling-voorkeuren, stijldiscussies, frameworkkeuze — is ruis.
Dit is de checklist die we in de eerste 48 uur doorlopen. Ze is bewust geordend op kosten van falen: wat bovenaan staat kan een bedrijf om zeep helpen, wat onderaan staat kost snelheid.
1. Integriteit van geld en data (hoogste faalkosten)
Beweegt het product geld of houdt het gereguleerde data vast, dan komt dit eerst. Fouten hier zijn geen incidenten — het zijn verplichtingen. We kijken naar:
- Of saldi worden afgeleid uit een append-only grootboek, of worden opgeslagen als een muteerbaar getal dat code kan overschrijven
- Idempotentie op elk betaal- en webhookpad — kan een herhaald verzoek twee keer afschrijven of bijschrijven?
- Gebruik exacte decimalen of gehele ondereenheden met valutaregels.
- Transactiegrenzen: kan een gedeeltelijke storing geld dubbel of nergens achterlaten?
- Reconciliatie: bestaat er een proces dat een afwijking opmerkt, of hoor je het van een klant?
2. Beveiliging en toegangscontrole
- Autorisatie serverseitig gecontroleerd bij elk verzoek, of aangenomen omdat de interface de knop verbergt
- Secrets in omgevingsvariabelen en een secrets manager, niet in de repo-historie
- PII en kaartgegevens: wat wordt opgeslagen, waar, en of dat überhaupt zou moeten
- Werkelijk bereikbare kwetsbaarheden in dependencies, niet alleen een rood getal in een rapport
- Multi-tenant isolatie: kan een vervalst verzoek de data van een andere klant lezen?
3. Architectuur en schaallimieten
We zoeken geen elegantie. We zoeken de concrete muur waar het systeem tegenaan gaat, en hoe ver die weg is.
- De single points of failure — de database, de queue, de service die iedereen aanroept
- Querypatronen die kloppen bij 1.000 rijen en fataal zijn bij 1.000.000 (N+1, ontbrekende indexen, onbegrensde scans)
- Of er zonder downtime uitgerold kan worden, en of iemand het ooit geprobeerd heeft
- Koppeling die verhindert dat je één feature oplevert zonder vijf modules aan te raken
- Of de architectuur past bij de teamgrootte — microservices met vier engineers zijn een schaalprobleem, geen oplossing
4. Oplevering en operatie
Codebases verslechteren niet vanzelf; het proces bepaalt hoe snel. Wat we meten:
| Signaal | Gezond | Rode vlag |
|---|---|---|
| Deployfrequentie | Op afroep, meerdere keren per week | Maandelijks, ceremonieel, gevreesd |
| Doorlooptijd van een kleine wijziging | Uren tot een dag | Weken |
| Rollback | Eén commando, geoefend | Theoretisch |
| Testdekking waar het telt | Geld- en authpaden gedekt | Hoog percentage, kritieke paden ongetest |
| Observability | Je merkt het vóór klanten | Klanten zijn je monitoring |
5. Technische schuld: getrieerd, niet opgesomd
Elke codebase heeft schuld. Een lijst ervan is nutteloos. Wat telt is de indeling in drie bakken:
- Blokkerend — verhindert de roadmap of zet geld/data op het spel. Nu oplossen.
- Cumulatief — maakt elke toekomstige wijziging trager. Bewust inplannen.
- Cosmetisch — stoort de smaak, kost niets. Met rust laten.
Het doel van een audit is niet alles vinden wat mis is. Het is de paar dingen vinden die erg genoeg zijn om ertoe te doen, en precies zijn over wat ze kosten.
Wat je aan het eind zou moeten krijgen
- Een geprioriteerde lijst bevindingen met ernst en business-impact — geen catalogus
- Per bevinding: de oplossing, een realistische inschatting en wat er gebeurt als je niets doet
- Een gefaseerde roadmap: dit kwartaal, volgend kwartaal, later
- Bewijs — de query, het endpoint, de exacte regel — zodat je team kan verifiëren in plaats van geloven
Maak van de eerste review toetsbaar vervolgwerk
Een begrensde review beschrijft dekking, niet volledige afwezigheid van fouten. Elke bevinding moet controleerbaar zijn.
- Koppel de getroffen route aan bewijs en reproductievoorwaarden.
- Scheid waargenomen fouten, vermoedelijke risico's en ontoegankelijke delen.
- Geef elke oplossing een eigenaar en regressietest.
Veelgestelde vragen
Hoe lang duurt een technische MVP-audit?
Een gerichte audit van een typische seed-stage codebase duurt 3 tot 10 werkdagen, afhankelijk van de omvang en hoeveel van het systeem geld beweegt. De eerste 48 uur dekken de gebieden met het hoogste risico — geldstromen, beveiliging en schaallimieten — wat meestal volstaat om te weten of er een serieus probleem is.
Hebben jullie toegang tot onze productiesystemen nodig?
Nee. Leestoegang tot de repository, de architectuur zoals uitgerold en een sessie met een engineer volstaan voor de beoordeling. Productietoegang is alleen nodig als ons ook gevraagd wordt te helpen bij lopende incidenten.
Wat is het verschil tussen een code review en een technische audit?
Een code review beoordeelt een wijziging. Een audit beoordeelt het systeem tegenover het bedrijfsplan: kan het de roadmap dragen, schaalt het, doorstaat het een due diligence van investeerders en verliest het geen geld. Het dekt architectuur, data-integriteit, beveiliging en opleverproces — niet alleen code.
Gaat een audit ons vertellen alles te herschrijven?
Vrijwel nooit, en wees op je hoede bij iedereen die standaard herschrijven voorstelt. Herschrijven is de duurste optie en meestal de verkeerde. In de meeste gevallen neemt een klein aantal gerichte fixes het echte risico weg.
Wat als toegang tot code of infrastructuur ontbreekt?
Markeer controles als onbevestigd en leg uit welke beslissing openblijft. Een presentatie kan context geven, maar vervangt geen bewijs uit uitvoering.
Dit toepassen op jullie codebase?
We leveren geprioriteerde bevindingen met inschattingen — geen pdf van 50 pagina's. Twee weken, vaste scope.
Verder lezen
Een kapotte MVP repareren (zonder opnieuw te beginnen)
Vrijwel elke oprichter met een kapotte MVP vraagt of herschrijven moet. Vrijwel altijd is het antwoord nee — en de reden is rekenkunde, geen sentiment.
Technische schuld bij startups: hoeveel is te veel?
Elke startup heeft technische schuld, en het meeste ervan was de juiste keuze. De vraag is niet hoe je die wegwerkt — het is welke delen rente vragen die je je niet meer kunt veroorloven.