The Programmer’s Brain: What every programmer needs to know about cognition

Maandag, 25 juli, 2022

Geschreven door: Felienne Hermans
Artikel door: Karl van Heijster

Hoe hersenwetenschap programmeurs kan helpen

[Recensie] Er is in de vakliteratuur over softwareontwikkeling – in boeken, in blogs, en op websites als Stack Overflow – geen gebrek aan gepeperde meningen over hoe goede code eruit dient te zien. En vaak hebben de verkondigers van die meningen daar ook goede redenen voor. Goede code is naar hun mening eenvoudig, bijvoorbeeld, of testbaar of uitbreidbaar. Je zou kunnen zeggen dat hun redenen erop geënt zijn software zo goed mogelijk te kunnen onderhouden. 

Wie dat zou moeten doen en hoe ze dat aan moeten pakken, daar zijn de meningen minder gepeperd over. Veel professionals lijken code te beschouwen als iets wat op zichzelf staat, zonder veel oog te hebben voor de programmeurs die dat onderhoud zouden moeten plegen.

Dat geldt niet voor Felienne Hermans, universitair hoofddocent bij het Leiden Institute of Advanced Computer Science (LIACS) van de Universiteit Leiden. In The Programmer’s Brain behandelt ze vragen als: wat gebeurt er in het brein als je code leest? Hoe leer je zo efficiënt mogelijk nieuwe programmeertalen en -concepten? En hoe kun je deze kennis inzetten om betere code te schrijven?

De kern van haar boek wordt gevormd door het onderscheid tussen drie soorten geheugen: langetermijn- kortetermijn- en werkgeheugen. Hermans kent haar publiek goed, en legt deze concepten op heldere wijze uit door te verwijzen naar hun digitale evenknie. Het langetermijngeheugen kun je vergelijken met de harde schijf, het kortetermijngeheugen met het RAM-geheugen, en het werkgeheugen met de processor van je computer.

Scènes

Er zijn vast hersenwetenschappers die gruwen van zulke vereenvoudigde weergaven, maar die kritiek mist het punt van het boek. Het is niet Hermans’ doel om programmeurs uit te leggen hoe het brein functioneert. Het is haar doel om een perspectief te bieden dat programmeurs in staat stelt om op een andere manier naar hun werk te kijken – en dat van hun collega’s. 

Met elke soort geheugen correspondeert bijvoorbeeld een typisch misverstand bij het lezen van code. Stel dat je code tegenkomt die syntactisch volkomen onbegrijpelijk is. In dat geval heb je een gebrek aan kennis. Anders gezegd, je hebt niet de juiste concepten in je langetermijngeheugen om de code te kunnen begrijpen. Wanneer je de code wel kunt lezen, maar niet snapt wat deze doet, heb je een gebrek aan informatie. Je kortetermijngeheugen heeft niet de context om de code te snappen. Bijzonder complexe code, ten slotte, overstelpt het werkgeheugen. Je hebt te weinig processorkracht om te kunnen volgen wat er gebeurt.

Elke soort misverstand heeft een andere oorzaak – en dus ook een andere oplossing. Om het langetermijngeheugen te helpen, zou je bijvoorbeeld door middel van flashcards je kennis van een programmeertaal kunnen vergroten. Het kortetermijngeheugen is erbij gebaat als je door de code gaat grasduinen om de context helder te krijgen. En complexe code kan het best worden omgeschreven naar een eenvoudiger variant – maar niet zonder hulp van geautomatiseerde tests. Waarom geautomatiseerde tests? Omdat die je werkgeheugen ontlasten!

The Programmer’s Brain zit vol met zulke boeiende, door wetenschappelijk onderzoek onderbouwde observaties. Of het nu gaat over naamgeving, de verschillende rollen die variabelen in code kunnen hebben, of de verschillende manieren waarop beginnende en gevorderde ontwikkelaars code lezen, Hermans weet op elke pagina wel een interessant inzicht uit haar hoge hoed te toveren. 

Het boek bevat bovendien veel praktische opdrachten die de lezer aansporen om direct met de nieuwe inzichten aan de slag te gaan. Bijvoorbeeld: de volgende keer als je een nieuw stuk code onder ogen kijkt, probeer dan eens je cognitieve belasting te monitoren, en schrijf op welke delen makkelijk of moeilijk te volgen waren. Waarom hadden ze dat effect op je? Of: denk eens aan een stuk code waar je onlangs mee hebt gewerkt. Welke mentale modellen hanteerde je allemaal om die voor jezelf begrijpelijk te maken?

De beste boeken over softwareontwikkeling, zijn de boeken die professionals in staat stellen om op een nieuwe manier naar hun vakgebied te kijken. Daar slaagt The Programmer’s Brain met verve in. Het boek is een absolute aanrader voor iedereen die op regelmatige basis met code werkt – of met softwareontwikkelaars. 

Want ook op het gebied van soft skills en samenwerking valt er veel van de hersenwetenschappen te leren. Vraag jezelf bijvoorbeeld eens af: waarom hebben nieuwe programmeurs zo’n lange periode nodig voordat ze productief worden? Zou het er soms wat mee te maken kunnen hebben dat we hun brein op de eerste dag overladen met informatie – over het probleemdomein, de softwarearchitectuur, de werkwijze -, om vervolgens te verwachten dat ze hun weg wel vinden? Wie oog heeft voor de programmeur achter de code, kan, met The Programmer’s Brain in de hand, het antwoord daar wel op raden!

Deze recensie verscheen ook op dotkarl