Development

Software-ontwikkeling
Kobayashi Maru

Kobayashi Maru

Waarom in programmeeropleidingen een no-winopdracht moet worden toegevoegd.

26 februari 2020

Mijn dochter leert, als onderdeel van haar studie taalwetenschappen, programmeren. Daar ben ik natuurlijk heel blij mee. Iedereen zou moeten leren programmeren! Zoals het hoort begint haar cursus met ‘Hello World!’.

Als mijn dochter een beetje volhoudt en als de opleiding een beetje goed is, krijgt ze over een tijdje het 'ik kan alles'-gevoel. Mijn theorie is dat iedereen dat krijgt wanneer je een programmeertaal geleerd hebt. Je hebt steeds lastigere opdrachten uitgevoerd en alle hoeken en kieren van de taal leren kennen. Je denkt: 'Niets houdt mij meer tegen. Ik kan alles programmeren wat er maar te programmeren is!'. In een paar maanden tijd van 'Hello World!' naar 'The sky is the limit'!

Heel veel van wat er misgaat in de IT komt door het (onterechte) idee van die maakbaarheid

Dit klinkt misschien als iets positiefs, dat je het idee krijgt dat je de hele wereld aankunt. Ik twijfel daarover. Door op deze manier te leren programmeren, krijg je het idee dat elk groot probleem alleen maar een optelsom van kleine problemen is – dat daarmee alles maakbaar is. Heel veel van wat er misgaat in de IT komt door het (onterechte) idee van die maakbaarheid. Als grote problemen alleen maar een optelsom van kleinere problemen zijn, noemen we dat ‘gecompliceerd’. Gecompliceerde problemen zijn gewoon veel en hard werk.

In werkelijkheid zijn heel veel IT-problemen helemaal niet ‘gecompliceerd’ maar ‘complex’. Complexe problemen zijn niet-lineair en onvoorspelbaar. Ze zijn alleen al complex omdat je met meerdere mensen (met conflicterende ideeën en meningen) samen aan een product werkt, omdat systemen invloed hebben op de business en de gebruikers daardoor weer veranderende wensen voor de systemen krijgen. Grote, belangrijke systemen zitten bomvol met afhankelijkheden, feedbackloops en verrassingen. Natuurlijk zijn ook complexe problemen een optelsom van kleinere problemen, maar hoe je die kleinere problemen oplost maakt het grotere probleem onvoorspelbaar.

Hoe moet je nieuwe programmeurs opleiden om voorbereid te zijn op complexiteit? Natuurlijk lopen studenten stage bij organisaties die realistische, complexe systemen moeten bouwen en onderhouden. Alleen krijgen ze daar dan typisch een behapbare en geïsoleerde opdracht. We willen dat de opdracht uitvoerbaar is. Ik ben sterk voorstander van een paar Kobayashi Maru-opdrachten voor studenten. Kobayashi Maru was een gesimuleerde opdracht voor Star Trek-officieren in opleiding. Een opdracht die niet succesvol uit te voeren is, een no-winscenario.

Hoe moet je nieuwe programmeurs opleiden om voorbereid te zijn op complexiteit?

Hoe ziet een no-winopdracht eruit? Dat is misschien wat lastig. De originele Kobayashi Maru-oefening was een soort moreel-ethisch dilemma; een gestrand ruimteschip redden, maar daarmee zelf ten onder gaan en een intergalactische oorlog veroorzaken. Dat is een beetje dramatisch voor een programmeursopleiding. Misschien een groot systeem waarbij je een bug moet zien te analyseren en fixen en daarmee andere bugs veroorzaakt?

Als een student de opdracht weet op te lossen door een hack, net zoals Captain Kirk dat deed, dan verdient hij natuurlijk een 10!

Magazine AG Connect

Dit artikel is ook gepubliceerd in het magazine van AG Connect (februarinummer, 2020). Wil je alle artikelen uit dit nummer lezen, klik dan hier voor de inhoudsopgave.

Reactie toevoegen
1
Reacties
Bop 02 maart 2020 14:13

Laten we Japanse walvisvaart buiten dit kader houden.