~/blog/gids/ai-quality
AI en codekwaliteit
Genereren is goedkoop geworden. Beoordelen niet. Over tests, churn en de lat die blijft staan.
Waar deze gids over gaat
Code genereren kost tegenwoordig seconden. Beoordelen of die code klopt, of hij past in het systeem en of hij standhoudt, kost nog precies evenveel als vroeger. Die schaar is het onderwerp van deze cluster, want vrijwel elk kwaliteitsprobleem met AI-code is er een variant van.
Ik schrijf hierover vanuit de praktijk. Ik gebruik agents dagelijks en ze leveren echt werk op. Juist daarom valt op waar het knelt: de output groeit, de reviewcapaciteit niet, en alles wat je niet beoordeelt komt later terug met rente. Snelheid werd goedkoop, je oordeel niet werkt dat uit aan de hand van wat massale orkestratie met je review doet.
Het begint voordat de code er is
De meeste slechte AI-code komt voort uit een slechte opdracht. De prompt is geen spec is het hele argument: een vage intentie is geen set requirements, en het model vult de gaten opgewekt op met iets aannemelijks. Het vervolg is de spec die je niet las: een agent je spec laten schrijven is prima, hem ongelezen doorsturen naar een tweede agent is waar het misgaat.
Er zit ook een signaal in hoe zwaar de agent het heeft. Je agent lijdt onder je technische schuld: struikelt een model steeds in dezelfde hoek van je codebase, dan was die hoek al verwarrend voordat het model er was.
Tests die iets bewijzen
De voor de hand liggende reflex: laat de AI de tests ook schrijven, dan komt de kwaliteit vanzelf goed. Bijna. Coverage bewijst alleen dat een regel is uitgevoerd, niet dat iemand zou merken dat hij fout is. En een model dat een denkfout maakt in de code, maakt diezelfde denkfout doodleuk nog een keer in de test. In AI genereert je tests, maar test het ook echt? gebruik ik mutation testing om die schijnzekerheid meetbaar te maken: saboteer de code en kijk of er ook maar één test rood wordt.
Review is de andere poort, en die verandert zodra een model de auteur is. De checklist voor het reviewen van AI-code beschrijft waar ik op let, in welke volgorde, en welke van je oude reviewreflexen niet meer aanslaan.
Wat er met je codebase gebeurt
Kwaliteit gaat verder dan de losse PR. Op codebase-niveau zie je drie patronen terugkomen.
Het eerste is meetbaar: code churn, regels die binnen twee weken alweer herschreven worden omdat de eerste versie nooit echt af was. Het tweede is sluipender: de lavalaag, code die niemand meer begrijpt en die daarom niemand meer durft aan te raken. Om het derde lacht iedereen, tot hij er zelf op grept: twintig manieren om bedragen te formatteren in één repo, omdat een agent zonder weet van je bestaande helpers er elke keer een nieuwe bij schrijft.
Codekwaliteit meten bij AI-code laat zien hoe je aan alle drie een getal hangt, en waarom drie van de meest voor de hand liggende meetinstrumenten je een cijfer geven dat AI-code juist vleit. Staat de diagnose eenmaal vast, dan is de opruimronde de behandeling. Datzelfde gereedschap krijgt er een vraag bij die het ter plekke niet kan beantwoorden: ligt het aan het model waar je net op bent overgestapt? AI-modellen vergelijken zonder benchmark is de meetopstelling daarvoor, en meteen de uitleg waarom je reflex om de prompt opnieuw te draaien en de uitkomsten te vergelijken niets bewijst.
De lat die blijft staan
Daarom eindigt deze cluster steeds bij dezelfde standaard. Ship nooit code die je niet snapt: als je een stuk code niet aan een collega kunt uitleggen zonder naar de AI te wijzen, hoort het niet in je repo. En houd je leesspieren getraind, want je vindt de bug niet als je de code niet schreef. Debugging-instinct is opgebouwd uit duizenden keren zelf schrijven en zelf lezen, en dat verdampt sneller dan je denkt.
Geen van deze regels is nieuw. Ze golden ook toen code nog met de hand werd getikt. AI heeft ze urgenter gemaakt, omdat de schaal waarop je ze kunt overtreden is geëxplodeerd. Vroeger begrensde je typsnelheid hoeveel onbegrepen code er per week in je repo kon belanden. Die rem is weg en er is niets automatisch voor in de plaats gekomen. De vervanging moet uit je proces komen, en dat is precies wat de stukken in deze cluster proberen te bieden.
Waar dit raakt aan de workflow
Kwaliteit begint eerder in de keten, bij hoe je een agent aanstuurt. Een goede spec, kleine stappen en review als vaste poort voorkomen meer ellende dan welke linter ook. De volledige werkwijze staat in de gids over agentic coding, hieronder bij de verwante onderwerpen.
Hieronder eerst drie startpunten, daarna alle stukken uit deze cluster, nieuwste eerst.
Beste startpunten
- Waarom je nooit code moet shippen die je zelf niet snapt
De kernregel van deze hele cluster. Als je maar één stuk leest, dit.
- De prompt is geen spec
Waarom een vage intentie geen requirements is, en wat er gebeurt als je doet alsof.
- Je vindt de bug niet als je de code niet schreef
Wat er met je leesvaardigheid gebeurt als AI het schrijfwerk overneemt.
Alle artikelen in dit onderwerp
Werd je code slechter na een modelwissel? AI-modellen vergelijken zonder benchmark
Je wisselt van model, er zit iets niet lekker, en je hebt niets om naar te wijzen. Waarom de prompt opnieuw draaien en een model als jury inzetten allebei niet werken, en de kleine, saaie meetopstelling die de vraag wel beantwoordt.
AI-codekwaliteit meten: het dashboard voorbij coverage en mutation testing
Coverage bewijst dat een regel draaide, mutation testing bewijst dat een test een bug zou vangen, maar geen van beide zegt iets over of de code stiekem lastiger wordt om aan te passen. Wat complexiteit, clone-detectie en fitness functions wel vangen.
Technische schuld van AI-code opruimen: de opruimronde die niemand inplant
Churn, duplicatie en de lavalaag zijn diagnoses. Dit is de behandeling: technische schuld van AI-code opruimen in een vaste opruimronde, en welk deel van dat werk de agent zelf kan doen.
Je codebase heeft twintig manieren om geld te tonen
AI-code-duplicatie is stil: een overgenomen codebase met twintig inconsistente formatters voor geld en datum. Hoe bijna-klonen ontstaan, hoe je ze opspoort en de CLAUDE.md-regels die ze stoppen.
AI-code reviewen: de checklist voor pull requests die een agent schreef
Een AI-pull-request beoordelen is een ander vak dan een menselijke PR reviewen. De namen zijn netjes, de comments klinken zeker, CI is groen, en tóch klopt het niet. Een checklist geordend naar waar modellen echt de fout in gaan.
AI genereert je tests. Maar test het ook echt?
AI-tests halen in seconden een hoge coverage, maar coverage bewijst alleen dat een regel is uitgevoerd. Mutation testing bewijst dat de tests een bug ook echt vangen, en Chaos-MCP zet die loop in je agent.
Snelheid werd goedkoop. Je oordeel niet.
Claude Code start nu duizend subagents op vanuit één prompt. De orkestratie is goede techniek. De tokenrekening, en wat die met je review doet, is het stuk dat niemand narekent.
Code churn: de lava die je nog kunt meten
AI-teams sturen meer PR's door dan ooit, maar 40% van die regels wordt binnen twee weken alweer herschreven. De lavalaag is wat verhardt. Churn is wat die kans nooit krijgt.
Je vindt de bug niet als je de code niet schreef
AI maakt je geen slechtere programmeur. Het maakt je een slechtere lezer. Over debugging-instinct, vaardigheidsverlies, en waarom het grootste gat niet in het schrijven van code zit maar in het begrijpen ervan.
Je agent lijdt onder je technische schuld
Een grappige plugin laat AI-agents kreunen bij slechte code. Maar de echte clou is wat het onthult over de code die we schrijven, en de code die we AI voor ons laten schrijven.