In 1930 voorspelde John Maynard Keynes dat we tegen het einde van de eeuw 15-urige werkweken zouden hebben. Maar tegen 2013 was het duidelijk dat de grote econoom iets verkeerd had gedaan.
Welkom in het tijdperk van onzinbanen, zoals antropoloog David Graeber het bedacht. Sinds de jaren dertig zijn er geheel nieuwe industrieën ontstaan, die niet noodzakelijk veel waarde toevoegen aan ons leven. Graeber zou de meeste banen in softwareontwikkeling waarschijnlijk onzin noemen.
Velen delen de mening van Graeber niet, vooral niet als het om software gaat. Maar hij raakt wel een interessant punt aan: naarmate steeds meer processen worden geautomatiseerd, zijn de meeste jobs op een gegeven moment verouderd. Volgens een schatting zou 45 procent van alle banen geautomatiseerd kunnen worden met de huidige technologie. En na verloop van tijd zullen ze dat waarschijnlijk ook doen.
In softwareontwikkeling, waar het sowieso vrij snel gaat, kun je dit in realtime zien gebeuren: toen softwaretesten een hot topic werd, begonnen automatiseringstools op te duiken. En dit is slechts een van de vele gebieden waar de bullshit-parts – de onderdelen die iteratief en tijdrovend zijn – van software zijn weggeautomatiseerd.
Dit roept echter de vraag op of ontwikkelaars zichzelf achterhaald maken door automatiseringstools te bouwen. Als steeds meer machines voor zichzelf code kunnen schrijven, waar hebben we dan mensen voor nodig?
Van het ontwerpen van logica tot het ontwerpen van ‘geesten’
Softwareontwikkelaars zijn in hart en nieren bouwers. Ze bouwen logische koppelingen, algoritmen, programma’s, projecten en meer. Het punt is: ze bouwen logische dingen.
Met de opkomst van kunstmatige intelligentie (artificial intelligence) zien we echter een paradigmaverschuiving. Ontwikkelaars ontwerpen geen logische links meer. In plaats daarvan trainen ze modellen over de heuristiek van deze logische koppelingen.
Veel ontwikkelaars zijn overgestapt van het bouwen van logica naar het bouwen van ‘geesten’. Anders gezegd: steeds meer softwareontwikkelaars nemen de activiteiten van datawetenschappers op zich.
De drie automatiseringsniveaus
Als je ooit een IDE hebt gebruikt, weet je hoe geweldig ondersteunde softwareontwikkeling kan zijn. Als je eenmaal gewend bent geraakt aan functies zoals automatisch aanvullen of zoeken naar semantische code, wil je niet meer zonder.
Dit is het eerste automatiseringsgebied in softwareontwikkeling. Als machines begrijpen wat je probeert te implementeren, kunnen ze je door het proces helpen.
Het tweede gebied is dat van gesloten systemen. Denk aan een social media app: deze bestaat uit veel verschillende pagina’s die met elkaar gelinkt zijn. Het is echter gesloten voor zover het niet is ontworpen om rechtstreeks met een andere service te communiceren.
Hoewel de technologie voor het bouwen van zo’n app steeds gebruiksvriendelijker wordt, kunnen we nog niet spreken van echte automatisering. Vanaf nu moet je kunnen coderen als je dynamische pagina’s wil maken, variabelen wil gebruiken, beveiligingsregels wil toepassen of databases wil integreren.
Het derde en laatste gebied is dat van geïntegreerde systemen. De API van een bank is bijvoorbeeld zo’n systeem omdat het is gebouwd om te communiceren met andere diensten. Op dit moment is het echter vrijwel onmogelijk om ATM-integraties, communicatie, wereldmodellen, diepe beveiliging en complexe troubleshooting problemen te automatiseren.
De wereld door de ogen van een computer
Op de vraag of ze in de toekomst worden vervangen door een robot, denken menselijke werkers vaak van niet. Dit geldt zowel voor softwareontwikkeling als voor vele andere gebieden. Over Surinaamse werkgevers en werknemers kan hetzelfde gezegd worden.
Ontvang onze Nieuwsbrief
Hun reden is duidelijk: kwaliteiten als creativiteit, empathie, samenwerking of kritisch denken zijn niet waar computers goed in zijn. Of….nog niet.
Maar vaak is dat niet het belangrijkste om een klus te klaren. Zelfs de meest complexe projecten bestaan uit veel kleine onderdelen die kunnen worden geautomatiseerd. DeepMind-wetenschapper Richard S. Sutton zegt het als volgt:
Onderzoekers proberen hun menselijke kennis van het domein te benutten, maar het enige dat op de lange termijn van belang is, is het gebruik van berekeningen.
Menselijke kwaliteiten zijn verbazingwekkend. Maar we hebben het belang van deze problemen overschat als het gaat om reguliere taken. Zo dachten zelfs onderzoekers lange tijd dat machines nooit een kat op een foto zouden kunnen herkennen.
Tegenwoordig kan een enkele machine miljarden foto’s tegelijk categoriseren, en met een grotere nauwkeurigheid dan een mens. Hoewel een machine zich misschien niet kan verbazen over de schattigheid van een kleine kat, is ze uitstekend in het werken met ongedefinieerde toestanden. Dat is wat een foto van een kitten is door de ogen van een machine: een ongedefinieerde toestand.
Op weg naar nieuwe spruitstukken en weegschalen
Naast het werken met ongedefinieerde staten, zijn er nog twee andere dingen die computers efficiënter kunnen doen dan mensen: ten eerste, dingen op schaal doen. Ten tweede, werken aan nieuwe variëteiten.
We hebben allemaal meegemaakt hoe goed computers op schaal werken. Bijvoorbeeld, als je een computer 200 keer iets zult vragen, zal die dit doen zonder te klagen, en de taak voltooien in een fractie van een seconde. Vraag het een mens, en je zult uren moeten wachten om de klus te klaren.
Spruitstukken zijn in feite een mooie of wiskundige manier om te verwijzen naar subsets van de ruimte die bepaalde eigenschappen delen. Als je bijvoorbeeld een stuk papier neemt, is dat een tweedimensionaal verdeelstuk in een driedimensionale ruimte. Als je het stuk papier wegknijpt of tot een vlak vouwt, is het nog steeds een spruitstuk.
Het blijkt dat computers erg goed zijn in het werken in spruitstukken die mensen moeilijk kunnen visualiseren, bijvoorbeeld omdat ze zich uitstrekken over twintig dimensies of veel gecompliceerde knikken en randen hebben. Aangezien veel alledaagse problemen, zoals menselijke taal of computercode, kunnen worden uitgedrukt als een wiskundig veelvoud, is er veel potentieel om in de toekomst echt efficiënte producten in te zetten.
Actuele ontwikkelingen
Het lijkt misschien alsof ontwikkelaars al veel automatiseringen gebruiken. Maar we staan pas aan de vooravond van softwareautomatisering. Het automatiseren van geïntegreerde systemen is bijna onmogelijk. Maar andere gebieden worden al geautomatiseerd.
Ten eerste behoren codebeoordelingen en foutopsporing binnenkort tot het verleden. Het Zwitserse bedrijf DeepCode werkt aan een tool voor automatische bug-identificatie. Google’s DeepMind kan al elegantere oplossingen aanbevelen voor bestaande code. En Facebook’s Aroma kan zelf kleine programma’s automatisch aanvullen.
Bovendien beweert het Machine Inferred Code Similarity System, afgekort MISIM, computercode op dezelfde manier te kunnen begrijpen als Alexa of Siri menselijke taal kunnen begrijpen. Dit is opwindend omdat een dergelijk systeem ontwikkelaars in staat zou kunnen stellen om veelvoorkomende en tijdrovende taken te automatiseren, zoals het pushen van code naar de cloud of het implementeren van nalevingsprocessen.
Spannende horizonten
Tot nu toe werken al deze automatiseringen uitstekend bij kleine projecten, maar zijn ze vrij nutteloos bij complexere projecten. Software voor het identificeren van bugs retourneert bijvoorbeeld nog steeds veel valse positieven, en automatische aanvulling werkt niet als het project een heel nieuw doel heeft.
Aangezien MISIM al heel lang niet meer bestaat, is de jury nog steeds niet bekend met deze automatisering. Je moet echter in gedachten houden dat dit het allereerste begin is en dat deze tools in de toekomst naar verwachting veel krachtiger zullen worden.
Spoedige aanvragen
Sommige vroege toepassingen van deze nieuwe automatiseringen kunnen het volgen van menselijke activiteit omvatten. Dit is natuurlijk niet bedoeld als spionagesoftware; op deze manier zouden zaken als het plannen van de uren van een werknemer of het individualiseren van de lessen voor een student kunnen worden geoptimaliseerd.
Dit biedt op zichzelf enorme economische kansen omdat studenten de belangrijke dingen sneller zouden kunnen leren, en werknemers zouden kunnen dienen tijdens de uren dat ze toevallig productiever zijn.
Als MISIM zo goed is als het belooft, kan het ook worden gebruikt om legacy-code te herschrijven. Veel bank- en overheidssoftware is bijvoorbeeld geschreven in COBOL, wat tegenwoordig nauwelijks wordt onderwezen. Het vertalen van deze code in een nieuwere taal zou het gemakkelijker maken om deze te onderhouden.
Dus, hoe kunnen ontwikkelaars en bedrijven de concurrentie voor blijven?
Al deze nieuwe applicaties zijn opwindend. Maar boven hen doemt een groot Damocles-zwaard op: wat als de concurrentie gebruik maakt van die automatiseringen voordat je aanslaat? Wat als ze ontwikkelaars volledig achterhaald maken?
Investeren in continue levering en geautomatiseerd testen
Dit zijn zeker twee modewoorden in de wereld van automatisering. Maar ze zijn niettemin belangrijk.
Als jij jouw software niet vóór releases test, brengt je mogelijk de gebruikerservaring in gevaar of stuit je onderweg op beveiligingsproblemen. En de ervaring leert dat geautomatiseerd testen gevallen bestrijkt waar menselijke testers niet eens aan hebben gedacht, hoewel ze misschien cruciaal waren.
Continue levering is een praktijk die steeds meer teams oppikken, en met goede reden. Als je heel veel functies bundelt en bijvoorbeeld slechts eens in de drie maanden een update uitbrengt, ben je de komende maanden vaak bezig met het repareren van alles dat tijdens het proces kapot ging. Deze manier van werken is niet alleen een grote belemmering voor een snelle ontwikkeling, het brengt ook de gebruikerservaring in gevaar.
Er is veel automatiseringssoftware om te testen en er is versiebeheer (en vele andere frameworks) voor continue levering. In de meeste gevallen lijkt het beter om voor deze automatiseringen te betalen dan om ze zelf te bouwen. Je ontwikkelaars werden tenslotte ingehuurd om nieuwe projecten te bouwen, niet om saaie taken te automatiseren.
Als je een manager bent, beschouw deze aankopen dan als een investering. Door dit te doen, ondersteun je jouwontwikkelaars zo goed mogelijk, omdat je profiteert van waar ze echt goed in zijn.
De verschuiving naar links: ontwikkelaars meenemen in de vroege stadia van elk project
Vaak worden projecten ergens in het hogere management of in de buurt van het R & D-team gecreëerd en vervolgens doorgegeven totdat ze het ontwikkelingsteam bereiken – dat vervolgens de taak heeft om dit projectidee waar te maken.
Omdat echter niet elke projectmanager ook een ervaren software-engineer is, kunnen sommige delen van het project geïmplementeerd worden door het ontwikkelingsteam, terwijl andere kostbaar of vrijwel onmogelijk zijn.
Die benadering was in het verleden wellicht legitiem. Maar zoals veel van de eentonige delen van softwareontwikkeling – ja, die delen bestaan! – worden geautomatiseerd, krijgen ontwikkelaars de kans om steeds creatiever te worden.
Dit is een uitstekende kans om ontwikkelaars naar links te verplaatsen, d.w.z. ze te betrekken bij de planningsfase van een project. Niet alleen om te weten wat kan worden geïmplementeerd en wat niet. Met hun creativiteit kunnen ze waarde toevoegen op manieren die a priori niet voorstelbaar zijn.
Maak van software een topprioriteit
Het is een korte vijf jaar geleden dat Satya Nadella van Microsoft verkondigde dat “elk bedrijf een softwarebedrijf zal zijn”. Hij had gelijk. Niet alleen moeten ontwikkelaars naar links verschuiven in het management. Software zou in prioriteiten moeten veranderen.
Als de huidige Covid-19 pandemie je iets heeft geleerd, dan is het dat veel van het leven en waardecreatie tegenwoordig online plaatsvindt. Software is koning. Paradoxaal genoeg wordt dit duidelijker naarmate het meer wordt geautomatiseerd.
Waar het op neerkomt: geeks worden leiders
Hoe meer tijd er verstrijkt, hoe meer mensen de andere kanten van ontwikkelaars zien. Mensen die coderen worden niet meer als nerds beschouwd, maar eerder als slimme mensen die coole dingen kunnen bouwen.
Software krijgt meer kracht naarmate het meer wordt geautomatiseerd. In die zin is jouw angst om jouw baan als ontwikkelaar te verliezen door automatisering grotendeels ongegrond.
Zeker, over een decennium – zelfs over een paar maanden – zul je waarschijnlijk dingen doen die je je nu niet eens kunt voorstellen. Maar dat betekent niet dat jouw baan zal verdwijnen. Het zal eerder een upgrade krijgen.
De angst die je echt moet overwinnen, is niet dat je je baan zou kunnen verliezen. Wat je moet afschudden, is de angst voor het onbekende. Ontwikkelaar, jij zult niet achterhaald zijn. Je zult gewoon niet zo veel langer nerds zijn. Je wordt eerder leider.