Er zijn twee heersende verhalen over vibe-coden. Het eerste is dat je een enkele zin kunt schrijven, en de AI geeft je een app van een miljoen dollar terug. Het tweede is dat, aangezien de AI alle code schrijft, mensen geen idee hebben wat erin zit. Het moet daarom uiteindelijk falen en een grootschalige apocalyps veroorzaken.

Beide verhalen zijn karikaturen van de werkelijkheid. In eerdere artikelen heb ik gesproken over mijn werk aan een aantal vibe-code projecten. We hebben gezien hoe ze zowel geweldig als veel werk zijn. In dit artikel ga ik diep in op de onderhouds- en duurzaamheidsvragen die voortkomen uit het overdragen van codeercontrole aan een machine.

Toen ik een jonge productmanager was, werd ik naar Los Angeles gestuurd om onze verkoopdirecteur te ondersteunen. Hij besloot me mee te nemen naar een van zijn favoriete restaurants. Dit restaurant specialiseerde zich in fusionkeuken, wat betekende dat de chef veel verschillende invloeden in zijn eten mengde. Het stond bekend om zijn chef's special, wat de chef die avond voor je besloot te maken.

Ik herinner me dat ik me afvroeg waar ik aan begonnen was. Ik wist dat ik eten zou krijgen, maar ik had geen idee wat ik zou moeten verorberen. Zoals bleek, was het eten die avond... raar. Het was eetbaar. Het was niet iets waar ik vrijwillig nog eens heen zou gaan.

Agentisch coderen lijkt veel op naar dat restaurant gaan. Je weet dat de reputatie van de codeer-AI die je gebruikt goed is, maar je hebt echt geen idee wat er aan je geleverd gaat worden. Je hebt weinig inzicht in de daadwerkelijke code die van de AI komt. Je zult het eigenlijk moeten opeten, ongeacht wat je voorgeschoteld krijgt.

Wanneer je agenten je code laat schrijven, is het alsof je een stel aannemers of ondergeschikten je code laat schrijven. Totdat je het test en evalueert, heb je geen idee wat je krijgt.

Alles hangt af van je prompt. Garbage-in, garbage-out heeft een veel diepere betekenis dan de oude afgezaagde uitdrukking doet vermoeden. Als je niet duidelijk genoeg prompt, en je onderhoudt het gesprek niet met voldoende helderheid en toezicht, dan wordt de code die je van de AI terugkrijgt moeilijk te verteren.

Engineering managers staan al sinds de piramides voor de uitdaging om aannemers onder hun toezicht te managen. Het toewijzen van werk en het evalueren van het werkproduct is wat engineering managers doen. Het handhaven van kwaliteit en controle in dat proces staat centraal in software-engineering.

Aan de andere kant, hoewel veel van het vibe-code doemdenken overdreven is, zit er ook waarheid in. Zonder kwaliteitsnormen en -praktijken kun je eindigen met problematische code. In dit artikel bespreken we de mythen rond agentisch coderen en de beste praktijken die je helpen om van AIs terug te krijgen wat je vroeg.

Veel AI-codeeradvocaten raden aan om de AI diepe, rijke vereistendocumenten te geven. Mijn ervaring is echter dat de AIs één enkel element van dat diepe document verkeerd kunnen interpreteren en volledig kunnen ontsporen op manieren die je niet kunt traceren of vinden.

Ik geef er de voorkeur aan de AI één simpele taak te geven. Zodra die succesvol is voltooid, geef ik er nog een. Op die manier is er minder kans dat de AI of ik het overzicht over het totale plan verliezen.

Als solo-ontwikkelaar schreef ik vroeger code regel voor regel. Ik zweette over elke regel. Ik wist alles van mijn code. Maar toen ik engineering manager was, moest ik vertrouwen op mijn teams en de individuele ontwikkelaars in mijn teams.

Zeker, we hadden programmeurs (ongeveer het equivalent van agenten). Maar ik moest nog steeds een discipline van testen en integratie in het systeem opbouwen, om er zeker van te zijn dat wat door een van onze programmeurs of aannemers werd ingediend, met al het andere werkte.

Als je agentisch coderen gaat gebruiken, zul je hetzelfde moeten doen. Checkpoints in elke fase. Zorgvuldig de integratie bijhouden. Ga ervan uit dat je levering van externe aannemers krijgt, en dus hun werk moet controleren voordat je het in je hoofdproject opneemt.

Ik heb een vriend met wie ik het delen van mijn software vrees.