POTLOODGUM, home

Ik heb vijftien jaar programmeerervaring. Ik heb heel wat applicaties met de hand gebouwd, regel voor regel. De afgelopen maanden heb ik zelf geen enkele regel geschreven. Claude schrijft hem, ik bepaal wat het moet worden.

Ik weet niet precies wat ik daarvan vind, dus dit is mij die vraag in het openbaar uitzoeken. Het is geen betoog dat ik gelijk heb. Het is een betoog dat de vraag het waard is om serieus te nemen, in beide richtingen.

Een opmerking over de reikwijdte. Dit gaat over het gebruik van LLM's voor code en UX, en alleen dat. Ik schrijf niet over door AI gegenereerde beelden, muziek, tekst of video, en ik verdedig dat ook niet. Slop bestaat met AI, en niet zo'n beetje, en ik heb sterke gevoelens over veel van wat er gegenereerd wordt.

Wat ik maakte

Het duidelijkste voorbeeld is Todododo, een todo-app met precies één gebruiker. Hij weet waar mijn huis is, hoe lang mijn drumles per fiets duurt, welke recepten ik echt kook en dat ik overweldigd raak van lange lijstjes. Een productteam zou het nooit uitbrengen. Geen markt zou erom vragen. Het bestaat omdat een mens met een heel specifiek leven een tool wilde die bij dat leven past: ik.

Dat is volgens mij het echt nieuwe. Software was vroeger te duur om voor één persoon te maken. Je schreef voor de duizend mensen met ongeveer hetzelfde probleem, en de rest redde zich maar. Als een werkend prototype een middag kost in plaats van een maand, valt de rekensom ineens andersom uit. Het kleine, lokale, rare probleem wordt het oplossen waard: de app voor één klaslokaal, één straat, één gezin, één beperking, één kapotte workflow.

Hetzelfde geldt voor hardware. Een oude laptop die geen enkele fabrikant meer ondersteunt, kan worden omgetoverd tot een kiosk, een mediabox of een dashboard, door iemand die nooit het geduld zou hebben gehad om de driverdocumentatie te lezen. E-waste is net zo goed een ontwerpprobleem als een materiaalprobleem, en veel van wat in een la belandt, wacht alleen op iemand die de eerste tien uur wrijving overbrugt.

Dit lijkt me geweldig.

Alle open-sourcekennis, in één gesprek

Wat ik moeilijk uit te leggen vind aan mensen die het niet hebben geprobeerd, is het enorme bereik. Vroeger kende ik een handvol libraries goed en al het andere een beetje. Nu kan ik zeggen wat ik wil en krijg ik iets gebouwd op tientallen jaren werk van anderen: parsers, encryptie, routing, kalenderberekeningen, kaartdata. Allemaal open source, allemaal te goeder trouw gedeeld door mensen die het gratis schreven.

Dat is een soort macht die ik niet licht opvat. Het betekent ook dat ik die mensen iets verschuldigd ben en ik wil ze op de een of andere manier steunen. Ik wil niet verantwoordelijk zijn voor de ondergang van open source.

Het deel waar ik me ongemakkelijk bij voel

Ik ga geen lofzang schrijven zonder de rekening erbij.

Energie en water. Deze modellen draaien in datacenters die veel elektriciteit verbruiken en veel water gebruiken voor koeling. Als ik om een functie vraag, komt ergens iets op gang wat ik niet zie. Ik kan mezelf voorhouden dat één verzoek klein is, en dat is het waarschijnlijk ook. Maar gemak dat onzichtbaar is, is ook gemak dat makkelijk te veel wordt gebruikt, en ik vraag mezelf liever af of iets gebouwd moet worden dan dat ik het bouw omdat het me niets kost. Ik wil eerlijk zijn dat ik mijn eigen voetafdruk hierin niet ken, maar goed kan hij niet zijn.

Auteursrecht. De modellen hebben geleerd van enorme hoeveelheden materiaal, waaronder code, veel daarvan gemaakt door mensen die nooit zijn gevraagd en nooit zijn betaald. De open-sourcecode waar ik van profiteer, is gedeeld onder licenties. Ik leer ontwerpstudenten over erkenning en auteurschap. Het zou vreemd zijn om dat te onderwijzen en hier mijn schouders over op te halen. Ik heb het nog niet opgelost. Maar ik probeer alleen met de open-sourcedingen te werken die ik ken.

Big tech. Ik vind het niet fijn om overgeleverd te zijn aan een handvol bedrijven. Mijn hele carrière heb ik de voorkeur gegeven aan tools die ik open kon maken, kon begrijpen en draaiende kon houden. Een model dat ik per maand huur, achter een login, dat kan veranderen of verdwijnen, is daar bijna het tegenovergestelde van. De ironie is dat juist deze tool me dingen laat bouwen die alleen van mij zijn: software die op mijn eigen server draait, met mijn eigen data, die geen enkel bedrijf kan uitzetten. Ik gebruik een afhankelijkheid om aan afhankelijkheden te ontsnappen, en ik kan niet beweren dat die spanning netjes is.

Slop, en de gladde helling

Slop is niet uniek voor code, en niet uniek voor AI. Maar er is wel een code- en UX-versie van, en ik voel hem in mezelf. Het is heel makkelijk om ja te zeggen tegen wat er terugkomt. De code draait, het scherm ziet er goed uit en ik ga door zonder er iets van te hebben begrepen. Dat is de gladde helling: geen ene grote beslissing om er niet meer om te geven, maar honderd kleine om niet goed te kijken. Uiteindelijk bezit je iets wat je niet kunt repareren.

"Maar jij hebt het niet gemaakt"

Ik ben altijd afhankelijk geweest. Ik heb HTTP niet gemaakt. Ik heb CSS of JavaScript niet gemaakt. Ik heb de browser, het besturingssysteem, de webserver, de database of het framework dat ik met de hand had gebruikt niet gemaakt. Vijftien jaar lang stond mijn werk op het werk van anderen, en niemand noemde dat vals spelen.

Ik moet altijd denken aan het verhaal van boze boeren die langs het weiland van een andere boer fietsen en klagen dat het niet met de hand is geploegd: als je het niet met handenarbeid doet, ben je geen echte boer. En een volledig geautomatiseerde bio-industrie is iets anders, maar een tractor gebruiken om je akkers te ploegen wordt echt niet meer afgekeurd.

Ik heb altijd op één abstractieniveau gewerkt en de lagen eronder vertrouwd. Wat er is veranderd, is het niveau waarop ik werk. Vroeger zei ik hoe. Nu zeg ik vooral wat en waarom.

Zielloos?

Mensen zeggen dat software op deze manier gemaakt zielloos is. Ik begrijp waarom. Veel van wat met deze tools wordt gemaakt, is generiek: dezelfde layout, dezelfde tekst, dezelfde gradiënt. Dat is echt zo.

Ik zal altijd proberen de ziel te vinden, in de illustraties, foto's of andere beslissingen en interacties die het betekenis geven voor mensen. Alles volledig automatiseren en efficiënt maken is niet mijn doel en past nooit bij mijn waarden.

Hoe trots mag ik zijn?

Ik weet het eerlijk gezegd niet.

Ik heb het handmatige deel van programmeren nooit leuk gevonden. Niet één keer, in vijftien jaar. Ik hield van het probleem, het ontwerp, het moment dat iets werkte voor iemand. Het typen was de tol die ik betaalde om daar te komen. Er zit dus echte opluchting in dat ik die niet meer betaal, en ik zou liegen als ik zei dat ik het mis.

En dan is er een kleiner, vreemder gevoel. Toen ik dingen met de hand bouwde, wist ik wat ik had verdiend. Nu werkt het ding, en kan ik niet zeggen hoeveel ervan van mij is. Is het trots als het moeilijke deel niet moeilijk was? Is het fraude als ik toch trots ben? Ik merk dat ik wil dat iemand anders me vertelt welk van de twee het is, en dat maakt me achterdochtig.

Rouwen & bouwen

Er is een woordenpaar dat dit beter beschrijft dan alles wat ik in het Engels kon bedenken: rouwen & bouwen. Ik doe allebei tegelijk, in dezelfde sessies, op dezelfde dag.

Bouwen is het makkelijke deel om uit te leggen. Er worden dingen gemaakt die anders niet zouden bestaan, en ze passen bij de persoon voor wie ze zijn gemaakt.

Het rouwen is moeilijker te duiden. Ik zei dat ik het handmatige coderen nooit leuk vond, en dat is waar. Maar vijftien jaar is lang om iemand te zijn die iets kan, en een vak is meer dan de onderdelen die je leuk vindt. Het was hoe ik een probleem begreep: door langzaam door elk deel ervan heen gedwongen te worden. Het was een vaardigheid die ik doceerde en een manier om ergens goed in te zijn. Er eindigt iets, en ik ben nog aan het uitzoeken wat precies. Een deel is het vakmanschap. Een deel is de weg die ik nam, waarvan ik niet zeker weet of mijn studenten die kunnen nemen. Een deel is simpelweg dat de grond is verschoven onder een beroep dat ik koos.

Wat me verrast, is dat de twee gevoelens elkaar niet afwisselen. Ik kan blij zijn dat iets werkt en tegelijk een stille pijn voelen over hoe het is gemaakt, in dezelfde minuut. Ik ben gestopt met proberen dat op te lossen. Ik denk dat het verdriet een teken is dat wat ik achterlaat ertoe deed, en het bouwen een teken dat ik niet stil wil blijven staan en het alleen wil betreuren. Als ik alleen bouwde, sloeg ik iets echts over. Als ik alleen rouwde, negeerde ik wat deze tools mogelijk maken voor mensen.

*Een lokaal LLM is gebruikt om mijn gebrabbel naar tekst om te zetten.

English