Papers we love: Begrip van code en taal. Gemeten met een fMRI scanner

Recent ben ik een paper tegengekomen die totaal niet lijkt op hetgeen ik normaal de revue laat passeren. Juist om die reden wil ik hem even uitlichten. Ik ben hem tegengekomen bij the morning paper en hij viel op doordat er een fMRI scanner is gebruikt in het onderzoek. De onderzoekers vroegen zich namelijk af hoe het menselijk brein zich gedraagt bij het uitvoeren van code reviews en hoe zich dit verhoudt tot natuurlijke taal en ervaring.

Als oorzaak wordt aangegeven dat developers meer tijd kwijt zijn aan het begrijpen van code dan aan welke andere activiteit dan ook. Inzicht in de manier waarop mensen dit inzetten kan dan ook zeer waardevol zijn. In het experiment worden de deelnemers dan ook voorgeschoteld met drie taken. Bij de eerste (begrip) wordt een code fragment getoond. Aan de hand hiervan wordt een vraag gesteld over de werking van deze code. De tweede (review) is het beoordelen van een pull request, vergezeld met een stukje commentaar. Men kan aangeven deze te accepteren of te weigeren. Als derde wordt een stukje proza getoond dat met simpele suggesties wat aanpassingen voorstelt. Hiervan moet ook worden aangegeven of deze suggestie wordt geweigerd of geaccepteerd. Op de onderstaande afbeelding zijn deze taken ook te zien.

Voor het experiment zijn uiteindelijk 29 proefpersonen ingezet. Dit zijn allemaal studenten, de meesten nog in hun bachelor fase. Deze hebben vier keer een elf minuten durende sessie ondergaan waarbij men het hierboven beschreven type opdrachten moesten uitvoeren. Gedurende deze opdrachten zijn er scans gemaakt van de hersenactiviteit, welke uitgebreid zijn getransformeerd en geanalyseerd. Een uitgebreide beschrijving van de experimenten en de data analyse is, inclusief nuancering, te vinden in de paper zelf. Gezien mijn medische en statistische kennis lijkt het me goed om hier zelf naar te kijken als je hier wel affiniteit mee hebt.

Wat voor mij wel weer interessant wordt zijn de resultaten. De eerste onderzoeksvraag ging over het kunnen identificeren van de taak gegeven een beeld van de gemeten hersenactiviteit. Wanneer de drie testen in paren met elkaar worden vergelen is het antwoord hierop ja. De verschillende activiteiten zijn dan goed te onderscheiden. De vervolgvraag was of er hersengebieden aan te wijzen zijn voor specifieke taken. Naast een deel overlap zijn er tussen de “natuurlijke taal” en de “programmeer taal” constructies wel verschillen te herkennen.

Vraag drie is het meest interessant. Kan er een verband worden gelegd tussen deskundigheid en classificatie accuratesse? Als eerste deskundigheid: deze is bepaald door de kwantiteit (aantal studiepunten) en de kwantiteit (het gemiddelde cijfer). Tussen de mate van deskundigheid en de proza taken is geen verband te leggen. Wanneer er gekeken wordt naar de code taken is er juist wel een verband met de deskundigheid. De auteurs concluderen dat de data suggereert dat programmeer talen bij meer expertise meer als natuurlijke taal wordt gehanteerd. Naarmate de ervaring toeneemt is er dus minder sprake van duidelijk onderscheid in de gemeten hersenactiviteit in verschillende gebieden.

Deze verandering prikkelt mij, gevoelsmatig onderschrijf ik deze conclusie. Wanneer je meer met code bezig bent wordt het steeds maar weer dynamischer. Je wordt expressiever, herkent structuur sneller en het uitdrukken van ideeën verloopt gemakkelijker. Stuk voor stuk zaken die je ook bij natuurlijke talen ziet gebeuren. Kijk maar naar jezelf. Hoe lastig was (of is) het soms niet om je niet in je moedertaal uit te drukken? Zeker naarmate het een taal is die je minder vaak gebruikt (zoals bij velen van ons vermoedelijk Frans of Duits).

Daarnaast vraag ik me ook dingen af. Standaard zien we de typische bèta kwaliteiten als indicator voor software development skills. Dit doen we primair voor zaken als het abstractievermogen. Maar wat als er in sommige gevallen juist meer affiniteit met taal benodigd is? Bij het modelleren van een domein (in de DDD zin van het woord) helpt het om zowel een technisch als linguïstisch virtuoos te zijn. Nu begrijp ik dat de paper hier niets over zegt, maar het intrigeert me wel.


Over deze papers we love: binnen Sogyo hebben we de traditie dat we maandelijks een nieuwsbrief rondsturen. De nieuwsbrief gaat veel over interne feitjes, echter sinds februari 2015 verzorgd Kevin van der Vlist het topic: papers we love. Hij deelt met ons papers die interessant zijn om te lezen en ons kunnen inspireren. De topic is uitgegroeid tot een mooie verzameling die we ook graag hier willen delen.