Terug naar artikelen

Week 26: Vertrouwen is goed, een vangrail is beter

Een week waarin een audit-tool zelfverzekerd ongelijk had en een agent de verkeerde PR mergede — en wat dat leerde over verifiëren.

Joop Snijder

Joop Snijder

Head of AI bij Info Support

Deze week ging over een ongemakkelijk besef: hoe meer ik aan coding agents overlaat, hoe belangrijker het wordt om niet op hun woord te vertrouwen. Niet uit wantrouwen, maar omdat zelfverzekerd ongelijk de gevaarlijkste vorm van ongelijk is. Twee momenten brachten dat scherp in beeld, en samen werden ze het thema van de week.

Een audit-tool die zeker wist dat het gelijk had

Het begon met een geautomatiseerde controle die mijn codebase nakijkt op problemen — zie het als een spellingchecker, maar dan voor software. Die controle meldde dat een stukje code overbodig was en weg kon. Het klonk logisch, en de verleiding is groot om zo’n melding gewoon te volgen. Tot ik zelf ging kijken en zag dat het helemaal niet overbodig was: het werd actief gebruikt. De controle had iets ouderwets aangezien voor iets nutteloos — een klein verschil met grote gevolgen als je het blind opvolgt.

Wat me daarna vooral bijbleef, was niet de fout zelf maar wat we eromheen ontdekten. Toen ik zei dat een echte oplossing betekent dat er een automatische test moet zijn die controleert of alles blijft werken, bleek dat juist die stukken code nooit getest werden. We hebben de afspraak toen omgedraaid: eerst een test schrijven, dan pas iets veranderen. De aanpassing zelf was klein. Het principe erachter weegt zwaarder: zo’n geautomatiseerde melding is een suggestie, geen waarheid.

Saniteer eerst, valideer daarna

Datzelfde patroon — eerst zekerheid bouwen, dan handelen — kwam terug bij een venijnige bug in de citation_refresher. Het script sloeg complete pagina’s over wanneer de bestaande data niet aan het schema voldeed, óók als de nieuwe voorstellen zelf prima in orde waren. De validatie struikelde dus niet over nieuwe data, maar over oude.

De oplossing was een sanitize-stap die bestaande data normaliseert vóórdat de validatie eroverheen gaat: null-sprekers worden lege strings, te lange inzichten worden afgekapt. Daarbovenop zette ik de limiet in de LLM-prompt expres conservatiever (235 tekens) dan de harde schemagrens (240), zodat er buffer is voor randgevallen. Na de fix draaiden de eerder overgeslagen pagina’s alsnog netjes door en gingen 27 themapagina’s live.

De les is bijna een levensmotto voor werken met AI: saniteer input vóór validatie, niet erna. Legacy-data kan in een staat zijn die nieuwe regels schendt, en als je dat niet opvangt blokkeert het oude spul je nieuwe werk.

Kleine scripts, concrete teksten

Tussendoor bouwde ik een nieuw scriptje, podcast_slots.py, dat in mijn agenda zoekt naar gereserveerde opnamemomenten en daar een kant-en-klaar Nederlands mailtje van maakt. De eerste poging zocht op "Reservering" — te breed, want zo verschenen er ook restaurantreserveringen tussen de podcast-slots. Bijgestuurd naar twee specifieke zoekwoorden en een duurfilter rond een uur, en daarna deed het precies wat het moest doen.

Hier merkte ik hoe mijn aansturing is verschoven. Ik bemoei me nauwelijks meer met de implementatiedetails, maar stuur scherp op productniveau: welke zoekwoorden, welke duur, waar de output landt. De agent doet het hoe, ik bewaak het wat.

Later in de week kreeg aitodaylive.nl een sponsorvermelding voor Info Support op de homepage, met een “ontstaan aan de keukentafel”-kaart die mooi aansluit bij het verhaal van de podcast. Ook daar koos ik bewust eerst voor een lokale preview en liet ik de echte pagina met rust tot het ontwerp klopte.

Wat het met mij deed

Er zit een rode draad door deze week die me bezighoudt. Twee keer was het bijna goed gegaan op een manier die je pas ziet als je echt kijkt: de controle die overtuigend onjuist was, en de validatie die op het verkeerde struikelde. Geen van beide schreeuwde om aandacht. Ze fluisterden hoogstens.

Dat maakt me alerter dan een week vol harde fouten zou doen. Een echte foutmelding is eerlijk — die zegt: hier is het mis. Een zelfverzekerd verkeerde melding is dat niet. Het kost mij actief werk om zo’n bevinding tegen de werkelijkheid te houden, en de verleiding is groot om dat over te slaan als de toon overtuigend genoeg klinkt.

Ik merk dat ik daardoor anders ben gaan kijken naar wat “vertrouwen” in deze samenwerking betekent. Ik vertrouw de agent prima om de code te schrijven. Wat ik niet meer doe, is zijn oordeel over de uitkomst voor lief nemen. De vangrail is niet de agent, de vangrail ben ik — en de tests, previews en vastgelegde nummers die ik ertussen zet.

Het patroon

Als ik de week samenvat in één zin: de waarde zit niet in sneller bouwen, maar in beter verifiëren. Saniteer voor je valideert. Schrijf een test voor je iets verandert. Maak een preview voor je iets live zet. Stuk voor stuk kleine handelingen, maar bij elkaar vormen ze het verschil tussen “het lijkt te werken” en “het werkt aantoonbaar”. Hoe meer ik aan agents overlaat, hoe meer mijn echte werk daar komt te liggen.


Deze blog is onderdeel van mijn “365 Days of AI Code”-experiment: een jaar lang software bouwen met coding agents, met dagelijkse reflectie. Geschreven op basis van mijn eigen journals en de sessiesamenvattingen van die week, met hulp van Claude Code.

Head of Research Center AI bij Info Support. Ik schrijf over AI-strategie, AI-agents en de praktische implementatie van AI in organisaties.