AI
Waarom AI-code alsnog nagekeken moet worden
Code laten schrijven door AI gaat verbazend goed. Je beschrijft wat je wilt, er komt iets terug, en het werkt.
Precies daar begint het gedoe. Werkend is niet hetzelfde als juist, en het verschil zie je niet aan de code.
Wat er goed aan is
Ik gebruik het dagelijks en ik ga er niet omheen draaien: het scheelt uren. Een formulier met validatie, een script dat bestanden hernoemt, een tabel die sorteert en filtert, de zoveelste variant op iets dat ik al tien keer heb gebouwd.
Voor werk waarvan ik precies weet hoe het eruit moet zien is het sneller dan zelf typen. En het is een uitstekende sparringpartner: "wat gaat hier stuk" levert vaak een geval op dat ik niet had bedacht.
Waar het misgaat
Bijna nooit in het gewone geval. Vrijwel altijd aan de randen.
- Het lege geval. Nul resultaten, een lijst zonder items, een gebruiker zonder naam. De code toont dan "0 resultaten" waar hij had moeten zeggen dat er niets gemeten is. Dat lijkt hetzelfde en is het tegenovergestelde.
- Twee dingen tegelijk. Twee mensen die op hetzelfde moment op verzenden drukken. Een model schrijft lezen-wijzigen-schrijven zonder erbij na te denken, en dan verlies je er een.
- Rechten. Een lijst ophalen zonder te controleren wie hem opvraagt. Dat werkt perfect zolang jij de enige gebruiker bent.
- Wat er gebeurt als het misgaat. Een fout die wordt weggeslikt zodat er niets rood wordt. Dat is de ergste, want stille storingen vind je maanden later.
Wat deze vier gemeen hebben: alles doet het als je het uitprobeert. Je moet ze zoeken.
Waarom een model dit niet zelf ziet
Het weet niet wat jouw systeem moet betekenen. Het kent het patroon van code die op deze vraag lijkt, en dat is iets anders dan begrijpen wat er in jouw geval waar moet zijn.
Een model kan feilloos code schrijven die precies doet wat je vroeg, terwijl je iets anders bedoelde.
Daarom begin ik nog steeds bij de data en niet bij het scherm. Als vastligt wat een status betekent, wie wat mag zien en wat er niet tegelijk waar kan zijn, dan is code die daarvan afwijkt zichtbaar fout. Zonder dat is elke variant even plausibel.
Wat ik doe voordat het live gaat
Ik lees het. Regel voor regel, ook de stukken die er saai uitzien, want daar zitten ze.
Verder: een test op het lege geval en op het dubbele geval, niet alleen op het geval uit het voorbeeld. Een blik op wat er gebeurt als de externe dienst niet antwoordt. En de vraag of ik dit over een half jaar nog begrijp, want onderhoud houdt niet op en dan is er niemand die de oorspronkelijke prompt nog heeft.
Wat ik niet doe is code opleveren die ik niet snap. Niet uit principe, maar omdat ik hem dan ook niet kan repareren op de dag dat een klant belt.
De snelheid van AI zit in het schrijven. De verantwoordelijkheid verschuift niet mee.
Zie ook: Waarom ik eerst de data modelleer en Ik gebruik AI om te schrijven. Hier ligt de grens.. Iets laten bouwen dat blijft werken? Bekijk hoe ik webapps bouw.