Evidence-Driven Development
De ontbrekende discipline in AI-ondersteunde engineering
Teams adopteerden AI-coderingstools, zagen snelheidspieken op korte termijn en betaalden later de verificatiebelasting voor foutopsporing, regressies en productie-incidenten.
De kloof is niet de generatie. De kloof is het bewijs. Evidence-Driven Development verandert die kloof in een herhaalbare workflow met expliciete poorten.
De lus
Het model is eenvoudig: definieer de intentie, bewijs de kloof, leg de basislijn vast, implementeer, bewijs dat het is gelukt, leg het resultaat vast en verifieer de kwaliteitsdimensies vóór beoordeling.
De kritische beperking is de volgorde. Stappen vóór implementatie zorgen voor betrouwbaarheid; stappen na implementatie creëren vertrouwen.
| Fase | Wat gebeurt er | Waarom het ertoe doet | | --- | --- | --- | | Document | Schrijf op wat gedaan betekent vóór de implementatie. | Voorkomt afwijkende eisen en vage succescriteria. | | Test: mislukt | Tests definiëren en uitvoeren die bewijzen dat de kloof bestaat. | Bevestigt dat u gedrag test, en geen aannames. | | Vastleggen: vóór | Leg de basisresultaten vast voordat u aan de implementatie begint. | Biedt niet-onderhandelbaar bewijs voor reviewers en toekomstige audits. | | Implementeren | Pas de verandering toe met AI-hulp onder beperkingen. | De uitvoering blijft snel, terwijl de lat door de mens gedefinieerd blijft. | | Test: geslaagd | Voer gerichte tests uit en bevestig dat het gedrag nu goed is. | Valideert de wijziging en lost de exacte acceptatiecriteria op. | | Vastleggen: na | Verzamel gelijkwaardige artefacten na de verandering. | Maakt een duidelijke voor/na-vergelijking mogelijk. | | Verifieer | Controleer de beveiliging, toegankelijkheid, prestaties, documenten en drift. | Vangst faalmodi-tests alleen missen. | | Beoordeling | De menselijke recensent accepteert of verwerpt op basis van bewijsmateriaal. | Houdt verantwoordelijkheid bij technici, niet bij aanwijzingen. |
:::grafische naam: ImplementationLoopDiagram bijschrift: De implementatielus: door mensen gedefinieerde beperkingen, AI-ondersteunde uitvoering. :::
| Fase | Wat gebeurt er | Waarom het telt |
|---|---|---|
| Document | Schrijf op wat gedaan betekent vóór de implementatie. | Voorkomt afwijkende eisen en vage succescriteria. |
| Test: mislukt | Tests definiëren en uitvoeren die bewijzen dat de kloof bestaat. | Bevestigt dat u gedrag test, en geen aannames. |
| Opname: voorheen | Leg de basisresultaten vast voordat u aan de implementatie begint. | Biedt niet-onderhandelbaar bewijs voor reviewers en toekomstige audits. |
| Implement | Pas de verandering toe met AI-hulp onder beperkingen. | De uitvoering blijft snel, terwijl de lat door de mens gedefinieerd blijft. |
| Test: geslaagd | Voer gerichte tests uit en bevestig dat het gedrag nu goed is. | Valideert de wijziging en lost de exacte acceptatiecriteria op. |
| Opname: daarna | Verzamel gelijkwaardige artefacten na de verandering. | Maakt een duidelijke voor/na-vergelijking mogelijk. |
| Verify | Controleer de beveiliging, toegankelijkheid, prestaties, documenten en drift. | Vangst faalmodi-tests alleen missen. |
| Review | De menselijke recensent accepteert of verwerpt op basis van bewijsmateriaal. | Houdt verantwoordelijkheid bij technici, niet bij aanwijzingen. |
Voordat bewijsmateriaal in de praktijk onomkeerbaar is
Teams kunnen in theorie een basislijn reconstrueren nadat de implementatie is gestart, maar bijna niemand doet dat. Het momentum verschuift naar voorwaarts fixeren.
Dat is de reden waarom ontbrekend eerder bewijs in gedisciplineerde lussen wordt behandeld als een reset-conditie.
:::grafische naam: MaturityLadder bijschrift: Volwassenheidsmodel: ad-hoc voor door audits geverifieerde engineering. :::
De audit: tien dimensies
| Dimensie | Wat het vangt |
|---|---|
| Build | Compilatie, lint en suite-integriteit |
| Telemetry | PII-lekken en onveilige logladingen |
| Accessibility | Oriëntatiepunten, toetsenbordstroom, kophiërarchie |
| Security | Geheimen, injectierisico, afhankelijkheidsproblemen |
| Performance | N+1 paden, onbegrensde lussen, geheugenlekken |
| Documentation | Specificaties en implementatieafwijkingen |
| Testdekking | Gedragsverandering zonder matchingtests |
| TODO-schuld | Overgeslagen follow-ups en onopgeloste tijdelijke aanduidingen |
| Foutafhandeling | Ingeslikte fouten en gelekte interne onderdelen |
| AI-breedsprakigheid | Overbodige opmerkingen en onnodige abstracties |
De audit: tien dimensies
| Afmeting | Wat het vangt | | --- | --- | | Bouw | Compilatie, lint en suite-integriteit | | Telemetrie | PII-lekken en onveilige logladingen | | Toegankelijkheid | Oriëntatiepunten, toetsenbordstroom, kophiërarchie | | Beveiliging | Geheimen, injectierisico, afhankelijkheidsproblemen | | Prestaties | N+1 paden, onbegrensde lussen, geheugenlekken | | Documentatie | Specificaties en implementatiedrift | | Testdekking | Gedragsverandering zonder matchingtests | | TODO-schuld | Overgeslagen follow-ups en onopgeloste tijdelijke aanduidingen | | Foutafhandeling | Ingeslikte fouten en gelekte internals | | AI-breedsprakigheid | Overbodige opmerkingen en onnodige abstracties |
:::grafische naam: AuditRadarChart-onderschrift: Audithouding voor en na bewijsgestuurde controles. :::
Voorbeelden van bewijs per domein
| Domein | Bewijs vooraf | Bewijs achteraf |
|---|---|---|
| API-eindpunt | krulreactie met verkeerde status | krulreactie met verwachte status en schema |
| Databasemigratie | Query vóór migratie | Query met nieuwe kolommen en ingevulde waarden |
| Infrastructure | Huidige planuitvoer | Gewenste planning en uitvoer toepassen |
| Performance | Benchmarkbasislijn | Benchmarkdelta na optimalisatie |
| Beveiligingspatch | Scanner vinden | Scanner schoon rapport |
De bewijslast bij pull-aanvragen
Bronnen
- Kent Beck (2025) Verbeterde codering: voorbij de vibraties
- ThoughtWorks (2025) AI-ondersteunde test-first-ontwikkeling
- METR (2025) AI-tools hebben ervaren ontwikkelaars 19% langzamer gemaakt
- Addy Osmani (2026) AI schrijft code sneller. Het is nog steeds jouw taak om te bewijzen dat het werkt.
- Microsoft.NET (2026) Tien maanden met Copilot Coding Agent in dotnet/runtime