Vibe coding klinkt aantrekkelijk: je beschrijft wat je wilt bouwen en AI schrijft de code. Ik heb het geprobeerd en het is indrukwekkend hoe snel er iets verschijnt dat werkt. Je vraagt om een functie, past een paar dingen aan en voor je het weet staat er een bruikbaar resultaat. Het gevaar zit precies in dat moment waarop je denkt: goed genoeg. Want iets kunnen maken is nog niet hetzelfde als begrijpen wat je hebt gemaakt.
Op gevoel kom je een heel eind
Ik golf al heel lang en doe dat voor een belangrijk deel op gevoel. Voor de goede vibe, zou je kunnen zeggen. Eén perfect geraakte bal kan genoeg zijn om de rest van de ronde te vergeten. Gevoel is alleen geen betrouwbare maatstaf wanneer je niet begrijpt wat er technisch gebeurt.
De hoek van het clubblad bij impact bepaalt in hoge mate waar een bal uiteindelijk terechtkomt. Een kleine afwijking voelt nauwelijks anders en kan over een lange afstand een groot verschil maken. Je kunt dus het gevoel hebben dat een slag goed was, terwijl er technisch iets gebeurde wat je tijdens het slaan niet hebt waargenomen. Wat je niet voelt, bestaat nog steeds.
Code kan hetzelfde probleem hebben
Bij door AI gegenereerde code werkt het vergelijkbaar. De eerste beoordeling is vaak eenvoudig: doet het programma wat ik gevraagd heb? Als het formulier verzendt, de pagina verschijnt en de knop reageert, lijkt het antwoord ja.
Functioneren is alleen één eigenschap van software. Onder de zichtbare uitkomst zitten keuzes over structuur, afhankelijkheden, beveiliging, foutafhandeling en de manier waarop onderdelen met elkaar samenhangen. Daar merk je weinig van zolang alles doet wat het moet doen.
De echte test begint vaak later, wanneer er iets moet veranderen. Een update raakt een onderdeel waarvan de rest afhankelijk is, een formulier stopt onverwacht met werken of een kleine aanpassing blijkt gevolgen te hebben op een plek die niemand had voorzien. Dan is relevant óf er code is en ook of iemand begrijpt waarom die code werkt zoals hij werkt.
Je begint bij de uitkomst
Bij traditioneel programmeren groeit een systeem meestal samen met het begrip van degene die het bouwt. Je denkt na over de structuur, maakt keuzes, loopt tegen fouten aan en leert onderweg hoe verschillende onderdelen elkaar beïnvloeden.
Vibe coding draait die volgorde gedeeltelijk om. Je begint met de gewenste uitkomst en laat een systeem voorstellen hoe die bereikt kan worden. Dat kan enorm efficiënt zijn, en het betekent ook dat je delen van het denkproces kunt overslaan waarmee normaal het begrip wordt opgebouwd.
Zolang de uitkomst klopt, hoeft dat geen probleem te zijn. Moeilijker wordt het wanneer kleine afwijkingen zich beginnen op te stapelen. Een snelle oplossing wordt onderdeel van een volgende oplossing, daar wordt weer op voortgebouwd en na verloop van tijd ontstaat een systeem waarvan steeds minder mensen precies weten waarom het in elkaar zit zoals het in elkaar zit.
Kwaliteit zit vaak buiten beeld
We beoordelen digitale producten gemakkelijk op wat direct zichtbaar is. Werkt het? Is het snel? Ziet het eruit zoals bedoeld? Vanuit het perspectief van een gebruiker zijn dat volkomen logische vragen.
Een groot deel van technische kwaliteit is alleen niet direct zichtbaar. Robuustheid merk je vooral wanneer er iets misgaat. Onderhoudbaarheid wordt pas belangrijk wanneer het systeem moet veranderen. Goede samenhang valt nauwelijks op zolang alles probleemloos functioneert.
Daar zit een parallel met veel ander vakwerk. Je ziet niet altijd aan het eindresultaat hoeveel begrip nodig was om ervoor te zorgen dat het ook onder afwijkende omstandigheden overeind blijft. Juist omdat AI overtuigende output kan produceren, wordt het gemakkelijker om dat verschil over het hoofd te zien.
Het gereedschap loopt voor op ons oordeel
AI is daarin niet het probleem. Het is uitzonderlijk krachtig gereedschap en kan ook ervaren ontwikkelaars helpen sneller te werken, alternatieven te onderzoeken en routinematig werk uit handen te nemen.
De kwetsbaarheid ontstaat wanneer de snelheid waarmee het gereedschap produceert groter wordt dan ons vermogen om de uitkomst te beoordelen. Wie onvoldoende begrijpt wat er onder de zichtbare laag gebeurt, kan moeilijk zien waar een oplossing fragiel is, welke keuze later problemen veroorzaakt of wanneer iets alleen toevallig goed lijkt te gaan.
Dat is niet uniek voor programmeren. Hetzelfde speelt bij teksten, beelden, analyses en vrijwel ieder ander vakgebied waarin AI steeds meer van het maakwerk kan overnemen. Naarmate produceren eenvoudiger wordt, verschuift een deel van het vakmanschap naar het kunnen beoordelen van wat er geproduceerd is.
Wie ziet de zes graden?
De interessante vraag is daarom niet meer of je met AI iets kunt bouwen. Dat kan in steeds meer gevallen. De belangrijkere vraag is wie ziet wanneer er onder een werkende uitkomst iets niet klopt en wie voldoende begrip heeft om het te corrigeren voordat het een werkelijk probleem wordt.
Bij golf kan een slag op de driving range uitstekend voelen terwijl het clubblad bij impact net verkeerd staat. Pas wanneer nauwkeurigheid ertoe doet, wordt die kleine afwijking zichtbaar in het resultaat. Bij software werkt het niet anders: wat in een eerste test overtuigend functioneert, hoeft nog geen systeem te zijn waarop je jarenlang wilt voortbouwen.
Gevoel is waardevol, en pas echt bruikbaar wanneer er begrip onder zit. Dat geldt op de golfbaan en steeds vaker ook voor wat we met AI maken.
