Waar de twijfel kan landen
Twee manieren om met een AI-agent te bouwen zien er identiek uit tot er iets breekt. Daarna kan er maar eentje vertellen waarom.
Twee manieren om met een AI-agent te bouwen kunnen er dagenlang identiek uitzien. Dezelfde prompts, dezelfde groene tests, hetzelfde gevoel dat je vooruitkomt. Dan breekt er iets, en het verschil komt in één keer boven. De ene kan je vertellen waarom. De andere niet.
De prijs is geen slechte code
We praten over vibe coding alsof het gevaar slordige code is. Edge cases die je mist, het model dat gokt, functies die het bijna doen. Een capabel model schrijft de meeste tijd prima code, dus de prijs zit ergens anders.
De prijs komt later, als er een symptoom opduikt en je op zoek gaat naar de oorzaak. In vibe-coded werk heeft die oorzaak geen vast adres. Je hebt je aanpak drie keer omgegooid terwijl je het gevoel najoeg van “nu werkt het”, dus de fout kan op elk van die drie terugslaan, of op de naad tussen twee. De bug is niet erger dan die van wie dan ook. Hij is alleen niet te herleiden.
Een spec is een poort, geen plan
Dit is wat ik ontdekte toen ik echt spec-gedreven ging werken, dwars door een lange en koppige verbouwing heen. De waarde van de spec zat nooit in dat ik het de eerste keer goed had. Vaak had ik dat niet. De waarde zat erin dat elk fout idee tegen een poort liep voordat het live ging, en de poort zei waarom.
Een verkeerde aanname over hoe twee getallen zich tot elkaar verhielden werd bij een check tegengehouden, met de exacte reden zichtbaar erbij. Het glipte er niet doorheen om een week later weer op te duiken als een raadsel zonder retouradres. Dat is de hele ruil. Een spec maakt van een stille fout een luide. Het schuift het moment van de waarheid naar voren, naar een plek waar je nog steeds kunt zien wat je dacht toen je de keuze maakte.
De meeste mensen verkopen specs als discipline, of als vooruit plannen. De echte waarde is kleiner en lastiger te zien: een spec is een set poorten die de foute gedachte vangen terwijl die nog goedkoop te vangen is.
De stoel waar je niet vanuit kunt reviewen
In de eerste ontdekking zit een tweede verstopt, en die verraste me meer.
Ik liet de agent als bouwer draaien. Ik liet hem zijn eigen werk niet reviewen. Ik hield een aparte reviewer in een aparte stoel. Niet omdat die reviewer slimmer was. Hetzelfde model, dezelfde weights, aan beide kanten van de tafel precies hetzelfde. De scheiding zelf deed het werk.
De bouwer neigt naar “kom vooruit”. Hij draagt z’n eigen half-gevormde theorieën met zich mee, en hij richt z’n twijfel op alles behalve op z’n eigen beste idee. Die blinde vlek gaat niet over kennis. Je kunt de bouwer elk patroon geven dat hij ooit nodig zou hebben, en hij wuift z’n eigen aanbeveling alsnog door, omdat scepsis wegwijst van het ding waar je in geïnvesteerd hebt. De reviewer had niet vaker gelijk. Hij zat alleen op een plek waar de twijfel kon landen.
Dezelfde zet, twee keer
De spec en de tweede reviewer doen hetzelfde werk. Beide zitten buiten de persoon die het werk doet. Als ik bouw, neig ik naar afmaken, en mijn twijfel richt zich op alles behalve op het idee dat ik het mooist vind. Een spec stopt dat bij een poort. Een aparte reviewer vangt het vanuit een stoel waar ik zelf niet in kan zitten zolang ik nog aan het bouwen ben. Geen van beide is slimmer dan ik. Ze zitten alleen ergens anders.
Vibe coding heeft geen ergens anders. Het is vaart en verder niks dat er los van staat. Dat houdt stand tot er iets breekt. Dan slaat elke beslissing terug op één persoon die in één richting beweegt, en is er geen hoek meer over om vanuit te zien welke beslissing de foute was.
Dat is de echte splitsing. Niet plan tegen geen plan. Of er iets is dat het werk controleert van buiten het werk.