Programmeren met een AI-copiloot: Dit vind ik als senior dev.
Ja, ik weet het, iedereen heeft inmiddels al een stuk geschreven over AI, het internet staat er vol mee. Toch voeg ik daar graag nog een eigen stukje aan toe, want het is bijna alleen maar hype en ik mis een kritische blik. Komtie.
Het is FUD wat de klok slaat in de wereld van software development. Managers worden overspoeld door posts over "10x productiviteit", het nakende einde van de traditionele developer en agents die met agents praten waarbij geen van beide agents een mens is. De goudkoorts drijft bedrijven massaal richting overhaaste AI-features waar niet per se iedereen op zit te wachten. Niemand wil de boot missen, en dus springt iedereen aan boord. Vaak zonder na te denken.

Toen deze dev nog een devje was
Ik weet nog dat ik begon met programmeren, op de 486 PC van mijn vader, met niet meer dan een bijgeleverd boek met DOS commando's. Ik leende een boek over QBasic en zo begon ik als devje mijn eerst games te maken. Geen syntax highlighting, geen autocomplete, geen Stack Overflow om me op weg te helpen, en al helemaal geen AI. Het moment dat ik samen met mijn vader naar de computerwinkel ging om een netwerkkaart te kopen moest nog komen. Als ik vast zat met een probleem, had ik twee opties: PRINT commando's en heel veel toewijding, of terug naar de bibliotheek. Debuggen in die tijd betekende: runnen, tegen een error aanlopen, zoeken, aanpassen, en weer runnen op hoop van zegen.

Alle tools waar we nu aan gewend zijn waren ooit spectaculaire verbeteringen. Ik weet nog dat ik Kladblok verwisselde met ConTEXT editor. Ineens had ik syntax highlighting, een geniale verbetering. De ontdekking van experts-exchange.com (zelfs nog vóór ze het koppelteken kregen!) en ik niet meer eindeloos hoefde te zoeken op Lycos of AskJeeves. Toen kwam Stack Overflow, waar je alle antwoorden kon opzoeken. En een echte IDE verving de editor: Eclipse. Dat was geen editor meer, nee, Eclipse kon je code refactoren. Die begreep wat je deed en gaf errors aan nog voordat je je code hoefde te runnen. Je kon navigeren door te Ctrl+klikken op classnames of variabelen. Documentatie lezen in de editor. Matchende haakjes werden vanzelf gevonden, en indentatie werd voor je verzorgd. Steeds minder hoefde ik rond te speuren, steeds meer ging vanzelf. Steeds meer kwam binnen handbereik. Ik hoefde steeds minder zelf het overzicht te bewaren en mijn eigen 'werkgeheugen' te belasten.
Hetzelfde geldt voor frameworks en SaaS-platforms. Je hoeft geen guru meer te zijn om een schaalbare server op te zetten. Je hoeft geen SQL meer te leren om een Firebase-backend in te stellen. Een moderne programmeur hoeft zich geen zorgen te maken over het dealloceren van geheugen.
Geen REvolutie maar Evolutie
En nu staan we voor de volgende golf: AI-assisted development. De marketingmachines draaien overuren met fantastische beloftes over productiviteitsexplosies. Maar in mijn ogen is dit gewoon de volgende stap in een lange evolutie van developer tools.
Eclipse, Firebase en Stack Overflow hebben geen developers vervangen, en ook AI zal ons niet overbodig maken. In plaats daarvan creëert het wat ruimte voor wat echt telt bij het maken van software: creativiteit, innovatie, begrijpen wat de klant wil, en het oplossen van complexe problemen. Je kan zelfs zeggen dat de productiviteit niet omhoog gaat, maar de verwachtingen. We kunnen nu mooiere dingen maken in minder tijd, of iemand met weinig ervaring kan snel een prototype tevoorschijn toveren. Maar er is niet één programmeur minder nodig om een programma te schrijven.
Twenty-five years in this industry taught me one immutable truth: There’s no substitute for understanding how things actually work.
Source: No-code platforms are secretly killing your productivity & Hackernews thread
Positieve impact van AI devtools
Ik ben zelf ook enthousiast over AI, begrijp me niet verkeerd, maar de echte kracht van deze tools zit in de kleine dingen. Die frustrerende boilerplate code die je voor de duizendste keer moet schrijven? Tab-tab-tab en het staat er. Die repetitieve patronen die net verschillend genoeg zijn om niet te kunnen kopiëren? AI snapt wat je bedoelt en past het automatisch aan. Het is als een slimme autocomplete die niet alleen weet wat je gaat typen, maar ook waarom. Het toevoegen van een vertaling in een andere taal is ook zo gepiept.
Het hoogtepunt is wel leren van nieuwe frameworks. Ik heb, nee, ChatGPT heeft eerder al eens geschreven hoe ik in twee weken tijd heb geleerd apps te schrijven in Flutter. Recenter heb ik me ook verdiept in Express, Wagtail, LangChain en meer - allemaal nieuwe territoria voor mij. AI functioneerde als een privédocent die precies op mijn niveau kon communiceren. Geen basic tutorials voor beginners, maar gerichte antwoorden voor een ervaren developer die gewoon de specifieke verschillen tussen frameworks wil begrijpen.
Waarom dan toch zo underwhelmed?
Een half leven geleden ben ik al afgestudeerd met een minor in Kunstmatige Intelligentie, en ik geef toe dat in de tussentijd de techniek een indrukwekkende sprong voorwaarts heeft gemaakt. Maar AI is niet nieuw. Het is niet eens technisch heel veel anders dan toen. AI is niets anders dan patroonherkenning, wat al jaren gebruikt wordt voor vanalles. Door patronen te herkennen kan een AI ook een patroon extrapoleren, en als het ware voorspellen wat de volgende stap zal zijn. Dit principe wordt al jarenlang succesvol gebruikt in socialemedia-algoritmes die je content voorschotelen die je leuk zal vinden, of door adverteerders die voorspellen wat je wilt gaan kopen. ChatGPT voorspelt simpelweg token voor token wat het volgende woord in de zin moet worden. Ook dat is niet nieuw, je toetsenbord op je smartphone doet dit ook al jaren. Vrijwel het enige verschil met vroeger is dat er zoveel computerkracht en energie tegenaan is gegooid dat het een drempel over is gegaan waarbij het ineens nuttig is geworden.
Het afgelopen half jaar heb ik intensief gewerkt met tools als Codeium, ChatGPT en Windsurf. En ja, ze zijn indrukwekkend - maar in dagelijks gebruik als copilot bij het programmeren niet per se een grote toevoeging. AI staat in ieder geval niet op mijn lijst van tien devtools die ik zou meenemen naar een onbewoond eiland, als dat ergens op zou slaan.
Waar gaat het mis?
Deze tools zijn gevaarlijk capabel. Ze produceren code die er professioneel uitziet, die werkt, die zelfs elegant kan zijn– en die dramatisch onveilig kan zijn.
Neem mijn Express backend experiment. De code werkte perfect, maar het was duidelijk dat beveiliging tegen SQL-injectie volkomen afwezig was. Niet eens op de meest basale manier was er rekening mee gehouden, wat betekent dat de site zo ontzettend onveilig was dat het geen uur zou duren voordat die gehackt zou zijn. Toen ik ChatGPT hierop aansprak, gaf die direct een security fix. De kennis was er wel, maar werd niet proactief toegepast. Natuurlijk is dit op te lossen met betere prompting, maar dat is natuurlijk geen oplossing waarmee je developers kan vervangen. Om goed te kunnen prompten heb je per definitie al de kennis nodig van een developer. Om dezelfde reden zullen no-code oplossing het nooit winnen van normale, getypte code. Het lost niet op dat je verstand van development moet hebben om iets te kunnen bouwen, en vooral niet om iets goeds te kunnen bouwen dat verder gaat dan een snel en onveilig prototype.
Anyone who has tried an AI assistant will recognize that their capability quickly deteriorates as you add more context, even if their context window is large. Hence, being able to feed them precisely what they need to figure out the implementation details is crucial [...] Well, this is exactly what humans are good for.
Source: Are AI assistants making us worse programmers?
Dit is geen kleine tekortkoming - het is een fundamenteel probleem dat aantoont waarom AI een tool blijft die expertise vereist, en geen vervanging ervan is. Er staat ook heel veel code op GitHub en op StackOverflow, maar om dat te gebruiken is het nodig dat je weet wat je doet. In plaats van te zoeken zijn we nu aan het prompten, maar in essentie doen we nog hetzelfde. Klakkeloos kopieren van StackOverflow was ook altijd al een slecht idee.
"People don't know what they want. They'll ask AI for a solution to their perceived need, and then run what they are given, often without understanding what it does. This applies equally to end users and (amazingly) to developers."
Source: AI coding is based on a faulty premise
En dan hebben we nog de regelrechte hallucinaties. Mijn copilots verzonnen hun eigen sorteermethodes die niet sorteerden. Voerde niet-bestaande functienamen in. Windsurf die vrolijk de inhoud van meerdere functies weggooide en verving met 'jouw code hier' omdat de context te complex werd. Het is als een overenthousiaste junior die soms briljante inzichten heeft, maar ook regelmatig code blind copy-paste die compleet onzinnig blijkt. Windsurf presteerde het zelfs om Python code te schrijven in een JavaScript-bestand. Uiteindelijk was ik zo lang bezig met opruimen dat toen de connectie met de AI server even weg was, ik het maar zo gelaten heb. Het was sneller, of in ieder geval minder frustrerend, zonder deze verwarde sidekick.
Reality Check: AI tools are like interns who know how to Google really fast but don’t understand context. Cursor started changing core implementations for unrelated edits. Cline would randomly rewrite half the system without asking. By the time I noticed, my codebase looked like the aftermath of a spaghetti fight at a junior developer convention. Most of the codebase was actually unreachable.
Source: Day 4 of an afternoon project.
Maar de ontwikkeling gaat toch heel snel?
Nou, dat valt best mee. Na de initiële verrassing die de komst van ChatGPT was, is het niet meer hard vooruit gegaan. In feite stagneert het zelfs een beetje, omdat OpenAI en Anthropic geen nieuwe bronnen meer kunnen vinden om hun modellen op te trainen. Het internet is uitgelezen. Met de snelheid waarmee het internet nu zelfs volstroomt met low quality AI-gegenereerde content, zal dat alleen maar moeilijker worden, zoals wanneer je steeds een kopie door een kopieerapparaat haalt.
Nog steeds zijn LLMs een soort black boxes die zo goed mogelijk het volgende stap in een patroon proberen te voorspellen. Features zoals 'advanced reasoning' maken dit principe niet 'slimmer'. Het zijn systemen van zijwieltjes en stoplappen die alsnog op een onderliggende black box werken, vaak ten koste van een veelvoud aan energieverbruik. Het is alsof de waterleidingen in je huis in principe redelijk werken, maar het water is bruin en er spuit ook wel eens water uit je stopcontact. Je kan steeds opnieuw een loodgieter bellen om telkens een stukje leiding te laten vervangen, maar misschien moet je toegeven dat je beter water uit een fles zou kunnen drinken. De loodgieter zal uiteindelijk ver komen, maar helemaal schoon wordt het water nooit.
Kortom
Nogmaals voor de mensen achterin: AI copilots zijn geen silver bullet. Het is een reality check die LinkedInfluencers liever negeren, want AI is zo ontzettend cool en hip en voor veel mensen de enige intelligence die ze kennen, maar wie op dagelijkse basis producten bouwt weet wel beter. Ze vereisen misschien wel méér expertise dan ooit. Want nu moet je niet alleen kunnen programmeren - je moet ook kunnen herkennen wanneer je AI-assistent de plank misslaat. En dat is lastig, want code lezen is moeilijk.
Een goede programmeur is het best met de tools die ze goed beheersen. Sommige van de beste programmeurs die ik ken werken het liefst in vim. Voor wie dat niet kent: het is een onmogelijk moeilijke editor die eruit ziet alsof het uit een 90s hackerfilm komt, en waar absoluut geen AI in zit.
Zelf blijf ik waarschijnlijk lekker programmeren met een AI copiloot. En die copiloot zit waar die hoort te zitten: in de bijrijdersstoel. Want ook al kunnen ze een aardig stukje kaartlezen, sturen kan je beter zelf doen.