Waar de twijfel kan landen
Twee manieren om met een AI-agent te bouwen zien er hetzelfde uit tot er iets stukgaat. Dan kan maar één ervan je vertellen waarom.
Twee manieren om met een AI-agent te bouwen kunnen dagenlang precies hetzelfde lijken. Dezelfde prompts, dezelfde groene tests, hetzelfde gevoel dat je vooruitkomt. Dan gaat er iets stuk en wordt het verschil in één klap zichtbaar. Bij de ene kun je achterhalen waarom. Bij de andere niet.
De kosten zitten niet in slechte code
We praten over vibe coding alsof slordige code het gevaar is. Gemiste randgevallen, het model dat maar wat gokt, functies die het nét niet doen. Een goed model schrijft meestal behoorlijke code, dus daar zitten de echte kosten niet.
Die komen later, wanneer er ergens een symptoom opduikt en je op zoek gaat naar de oorzaak. In werk dat met vibe coding is gebouwd, heeft die oorzaak geen vast adres. Je hebt de aanpak drie keer veranderd terwijl je achter het gevoel aan zat dat het nu werkte. De fout kan dus uit elk van die versies komen, of uit de overgang tussen twee ervan. De bug is niet erger dan die van iemand anders. Alleen niet te herleiden.
Een spec is een poort, geen plan
Dit ontdekte ik toen ik echt spec-driven ging werken, tijdens een lange en hardnekkige herbouw. De spec zorgde er niet voor dat ik het meteen goed had. Dat had ik vaak niet. Wat hij wel deed, was elk verkeerd idee bij een poort tegenhouden voordat het verder kwam, met de reden erbij.
Een verkeerde aanname over hoe twee getallen zich tot elkaar verhielden liep vast op een controle die precies liet zien waarom. De fout glipte niet door om een week later terug te komen als een raadsel zonder afzender. Dat is de hele ruil. Een spec maakt van stil falen zichtbaar falen. Hij haalt het moment van de waarheid naar voren, naar een plek waar je nog kunt zien wat je dacht toen je de beslissing nam.
Specs worden meestal verkocht als discipline, of als vooruit plannen. De werkelijke waarde is kleiner en lastiger te zien: een spec is een reeks poorten die een verkeerde gedachte tegenhouden zolang het nog weinig kost om dat te doen.
De stoel van waaruit je niet kunt reviewen
In die eerste ontdekking zat nog een tweede, en die verraste me meer.
Ik liet de agent bouwen. Ik liet hem zijn eigen werk niet reviewen. Daarvoor hield ik een aparte reviewer op een aparte plek. Niet omdat die reviewer slimmer was. Hetzelfde model, dezelfde weights, aan beide kanten van de tafel precies hetzelfde ding. Het verschil zat in de scheiding zelf.
De bouwer neigt naar vooruitgang boeken. Hij neemt zijn eigen halfgevormde ideeën mee en richt zijn twijfel op alles behalve zijn beste idee. Die blinde vlek heeft niks met kennis te maken. Je kunt de bouwer elk patroon geven dat hij ooit nodig zou kunnen hebben en nog steeds laat hij zijn eigen aanbeveling door, omdat scepsis zich richt op wat buiten het idee ligt waar je zelf in hebt geïnvesteerd. De reviewer had niet vaker gelijk. Hij zat alleen op een plek waar de twijfel kon landen.
Dezelfde beweging, twee keer
De spec en de tweede reviewer doen hetzelfde werk. Ze staan allebei buiten degene die het werk uitvoert. Als ik bouw, wil ik vooruit, en mijn twijfel richt zich op alles behalve het idee waar ik zelf het meest in geloof. Een spec houdt dat tegen bij een poort. Een aparte reviewer vangt het op vanaf een plek waar ik niet tegelijk kan zitten zolang ik nog aan het bouwen ben. Geen van beide is slimmer dan ik. Ze staan alleen ergens anders.
Vibe coding heeft geen ergens anders. Het is alleen beweging vooruit, zonder iets wat erbuiten staat. Dat werkt tot er iets stukgaat. Dan loopt elke beslissing terug naar één persoon die maar één kant op bewoog, en is er geen andere hoek meer van waaruit je kunt zien welke beslissing de verkeerde was.
Daar zit het echte verschil. Niet plannen tegenover niet plannen. Of er iets buiten het werk staat dat het werk controleert.