Als gevolg van de hype rond ChatGPT lees ik over zorgen over het voortbestaan van de software industrie, en het vermoeden dat AI straks het werk van software engineers over gaat nemen. Natuurlijk is het indrukwekkend voor het eerst te zien dat ChatGPT in staat is om een lijstje dieren te laten verzinnen en er zelfstandig een verhaal omheen te laten schrijven, maar zo was Internet 20 jaar geleden ook ooit magische technologie. Zelf zie ik de AI ontwikkelingen eerder als een broodnodige enabler voor ons werk. Lees hieronder hoe ik die evolutie zie vanuit het perspectief van mijn eigen geschiedenis.
Als ik terug ga naar de tijd van mijn Commodore 64 (en later MSX-2) en mijn fanatieke pogingen om software te schrijven, dan besef ik me achteraf dat het een tijd was van enorme beperkingen. Niet alleen in rekenkracht, maar vooral ook in kennis. Mijn skills gingen niet verder dan de boeken en tijdschriften die ik had gelezen en de ervaring die ik door vele uren ploeteren hands-on had opgedaan. Daarmee had ik mezelf inmiddels machinetaal en C++ aangeleerd en kon ik de BIOS lezen, maar de software die ik hiermee kon maken ging niet verder dan losse programma’s die een bestand konden schrijven. Uiteindelijk werd mijn productiviteit beperkt door de uren die ik er zelf in had gestoken.
Gelukkig werd in de jaren ’90 het Internet met zoekmachines als Altavista en later Google uitgerold, en kreeg ik daarmee toegang tot bizar veel meer informatie. De beperking van de boeken in mijn kast viel weg, en werd vervangen door openbare websites met oneindig veel kennis. Ook versnelden hierdoor de innovaties om mij heen in zowel programmeertools als in beschikbare software-ecosystemen. De ontdekking van TCP/IP na jaren klooien met seriële verbindingen was bijvoorbeeld een openbaring die me uit die tijd nog erg bij staat. Software was niet meer de extrapolatie van mijn eigen ervaring, en mijn applicaties konden veel complexer worden. De toegang tot al die kennis maakte mijn ervaring niet overbodig, maar vermenigvuldigde juist mijn bestaande kennis en kunde.
De volgende grote revolutie was de uitvinding van Stack Overflow, YouTube en andere manieren om van de ervaring van andere experts te leren. Waar ik tot op dat moment in mijn eentje aan het zoeken was naar oplossingen, had ik ineens toegang tot de kennis en kunde van oneindig veel software ontwikkelaars. Hun bereikbaarheid maakte mijn rol niet overbodig, maar vormde juist de aanvulling waardoor ik me eerder en met meer vertrouwen op onbekend terrein kon begeven. Het stelde me in staat om sneller nieuwe dingen te leren in een steeds sneller uitdijende software wereld.
Met de groei van GitHub ontstond een zondvloed van Open Source software die oplossingen bood voor alles wat je maak kunt bedenken. Van complete frameworks tot handige libraries, en van code snippets tot hele applicaties. Je zou kunnen bedenken dat alle software in rap tempo wel geschreven zou zijn, en hiermee massa’s softwareontwikkelaars overbodig zouden worden. Het tegenovergestelde bleek waar: Het werd vooral gemakkelijker om nog grotere en complexere oplossingen te realiseren door verstandig gebruik te maken van wat er aan deeloplossingen al beschikbaar is. De vraag naar software nam niet af, maar nam juist verder toe.
De recente introductie van taalmodellen als ChatGPT en Github Copilot leveren naar mijn mening de volgende mogelijkheid om nóg meer software te maken: Door de tijd van het zoeken naar oplossingen te reduceren en kant-en-klare programmacode voor te stellen, levert het opnieuw een sprong voorwaarts in het efficiënter kunnen bouwen van nog meer software. Het is volgens mij eerder een voorwaarde om de vraag naar software bij te benen, dan het einde van de industrie. Mijn inschatting is dat het vooral een manier zal blijken om op een hoger abstractieniveau naar software te kunnen kijken, zodat de productiviteit verder omhoog kan.
Programmeren gaat al jaren steeds meer over het bevatten van abstracties en creativiteit dan het lezen en schrijven van broncode. Het is niet voor niets dat de Agile beweging de ontwikkelaars uit de code naar het probleem van de klant trekt. De focus van het vak gaat met de introductie van AI tools slecht verder richting het begrijpen van het op te lossen probleem en het verzinnen van de richting van oplossingen. Dat is mogelijk een uitdaging voor programmeurs die code zijn bijven schrijven met een blokwitter, maar voor de werkelijke artiesten levert dit volgens mij juist ongekende mogelijkheden.
Ik zie kortom eerder een evolutie van machine code die “iets doet”, naar C/C++ code die een systeem levert, naar OO voor modellering als applicatie tool, naar (Open Source) frameworks als infrastructuur en bouwblokken, naar AI om abstractie op te schalen voor nog grotere systemen door kleinere teams. Iemand moet toch ooit HAL-2000 bouwen als we uiteindelijk met Elon Musk de aarde willen verlaten. Daar is volgens mij nog wel wat meer evolutie voor nodig dan AI tooling ons op dit moment levert…