Moet ik nog leren programmeren met de opkomst van AI?
De opkomst van generatieve AI, het meest bekend van ChatGPT, heeft voor veel opschudding gezorgd. Eén van de dingen waar de Large Language Models (LLM) erg goed in zijn, is het genereren van code. ChatGPT kan dit goed, maar er zijn ook modellen die speciaal op code zijn getraind. Een veel gebruikt voorbeeld hiervan is CodeLLama. Door deze ontwikkelingen rijst bij jou misschien de vraag: moet ik nog wel leren programmeren? Heeft dat nog zin? Een terechte vraag! In dit artikel neem ik je graag mee in hoe ik hier tegenaan kijk.
Wat is programmeren?
Voordat we ingaan op de toekomst van programmeren in de wereld van AI, is het belangrijk vast te stellen wat programmeren eigenlijk is. Als je bijvoorbeeld kijkt naar de uitleg op Wikipedia zie je dat de focus erg ligt op het schrijven van de code:
Programmeren is het schrijven van een computerprogramma, een concrete reeks instructies die een computer kan uitvoeren. Dit is de taak van een softwareontwikkelaar of programmeur.
Maar wat belangrijk is om te onthouden, is dat er heel wat werk nodig is rondom het schrijven van code. Bijvoorbeeld:
- Het probleem dat je wilt oplossen goed definiëren
- Wensen en eisen van gebruikers ophalen
- Deze wensen en eisen vertalen naar mogelijke oplossingen
- Deze mogelijke oplossingen tegen elkaar afwegen
- Prioriteren wat je eerst gaat doen
- Afstemmen met collega's
- Afstemmen met opdrachtgevers
- Je tussentijdse resultaten demonstreren, feedback ophalen
- ...
Eén van de moeilijkere dingen binnen het programmeren is de wensen en eisen scherp krijgen. Stel dat je werkt aan een systeem waar gebruikers hun projecten kunnen beheren. De opdrachtgever komt met een wens: "Ik wil dat gebruikers een project kunnen kopiëren naar een nieuw project". Ok, een paar vragen:
- Wat moet er allemaal gekopieerd worden? Alle openstaande items, afgehandelde items, naam, deadlines, projectmedewerkers?
- Moeten er voor het kopiëren wijzigingen gemaakt kunnen worden? Welke?
- Hoe zien de stappen eruit? Vanuit waar wordt er gekopieerd? Hoe zien alle schermen eruit?
- Kan iedereen een kopie maken? Of alleen beheerders? Van welke projecten wel, van welke niet?
- En zo nog 100 vragen.
Voordat je code kunt schrijven moeten al deze vragen helder zijn, anders weet je niet welke code je moet schrijven. Programmeren is uiteindelijk het vertalen van de intentie van de maker naar instructies die een computer kan gebruiken. Dit vertalen van intentie naar computercode vraagt een precieze en exacte taal. Oftewel: een programmeertaal.
Wat kan AI wel en niet?
De huidige generatie AI kan dit vertalen van intentie naar computercode niet. Je kunt wel de opdracht geven: "Schrijf code dat ervoor zorgt dat de gebruiker een bestaand project naar een nieuw project kan kopiëren". En de AI zal moeiteloos code genereren. Maar of het goed is, is maar de vraag. Afhankelijk van het model zal het best ver kunnen komen, zeker als het de context van de rest van je code kent. Het ziet dat het project in Python is geschreven, het ziet dat je met Django werkt en herkent de algemene structuur van een scherm. Maar dit is allemaal al veel gevraagd. En dan nog. Het stelt niet al die bovenstaande vragen: wie moet er kunnen kopiëren? Welke projecten wel, welke niet? Welke elementen wel, welke niet? Etc. Dit zou je dan allemaal in de opdracht moeten meegeven.
Wat AI wel heel goed kan is bijvoorbeeld jouw code lezen, en suggesties doen voor testen. Of jouw code lezen en suggesties doen voor verbeteringen. Ook kun je AI afgebakende instructies geven: schrijf een functie die deze parameters als input heeft en dit als resultaat geeft. Maar ook hier geldt: je moet precies zijn om de gewenste resultaten te krijgen. Toch kom je hiermee een heel eind. Sommige modellen kunnen ook heel goed suggesties doen in jouw code, op basis van de omliggende code. De AI begrijpt waar je aan werkt, en wat er nog nodig is.
Maar in alle gevallen geldt: jij als programmeur hebt dan al bedacht wat de wensen en eisen zijn en hoe die vertaald moeten worden naar code. Het code schrijven gaat met behulp van AI sneller en makkelijker, maar een belangrijk deel (het nadenken) doe je dus nog zelf.
Bovendien is AI (nog) niet foutloos. Een bekend fenomeen is het zogenaamde "hallucineren": de AI weet niet precies wat het moet doen, en verzint maar wat. Dit kan soms subtiel zijn. Gebruik je AI om code te schrijven, dan is het dus heel belangrijk dat je het altijd zelf nog controleert. En om dat te kunnen doen moet je wel weten hoe het in elkaar steekt, anders haal je de (subtiele) fouten er niet uit.
Conclusie
Kortom: AI is een geweldig hulpmiddel, maar momenteel niet meer dan dat. Het is een soort autocomplete on steroids. Het kan zeker het proces van het code schrijven versnellen, en je kunt er zelfs van leren. Bijvoorbeeld door te vragen: hoe kan ik mijn code beter maken?
Maar vooralsnog is AI geen complete vervanging van een programmeur, omdat een AI niet de intentie van een klant, gebruiker of opdrachtgever kan omzetten naar code. Wie weet kan dit in de toekomst wel, dan kan de AI niet alleen code genereren, maar ook heel goed uitvragen wat de precieze wensen zijn. Maar zover zijn we nog niet, en dus is het zeker nog zinvol om te leren programmeren. Al is het maar om de code die AI genereert te kunnen controleren.
Niemand kan in de toekomst kijken. Maar voorlopig durf ik de stelling wel aan dat het zeker nog zinvol is om te leren programmeren!