Door Tweakers Partners

“Zelfs doorgewinterde developers kunnen leren beter te programmeren”

07-06-2022 • 08:00

87

Wat gebeurt er eigenlijk in je brein als je programmeert? Het is een vraag die Felienne Hermans, associate professor aan de Universiteit Leiden, vrijwel dagelijks bezighoudt. In een talk op de Tweakers Developers Summit, die plaatsvindt op 23 juni, vertelt ze hoe je effectiever code kunt lezen en programmeren. Felienne Hermans

Voor software-development verschijnen voortdurend nieuwe talen. Spannend natuurlijk, want ze bevatten steeds veel nieuwe features. Dat motiveert om te leren, maar vaak is het ook ‘hap-snap’, waardoor de echte diepgang ontbreekt. “Om een programmeertaal echt goed te doorgronden, moet je niet alleen naar de syntax kijken, maar ook naar de achterliggende filosofie”, vindt Felienne. “Onlangs maakte ik bijvoorbeeld mee dat een Haskell-developer mijn Python-syntax ging omschrijven. Weliswaar in Python, maar niet volgens de Python-filosofie. Een programmeertaal leren is echt moeilijker dan je denkt. Je kunt alles wel googelen, maar als dat je denkframe is, kom je niet zo diep. Nieuwe gewoonten en routines inbouwen is belangrijk. Ik programmeer al meer dan twee jaar iedere dag in Python, maar daarbij moet ik nog steeds moeite doen om denkpatronen uit C# en C++ van me af te schudden. De kennis is er, maar zij is nog niet echt geïnternaliseerd.”

Hoe leer je nu echt programmeren? En wat gebeurt er daarbij in je brein? Deze vragen omvatten het werkgebied van Felienne Hermans, die er onder meer colleges over geeft, onderzoek aan wijdt en boeken over schrijft. Haar meest recente boek kreeg als titel ‘The Programmer’s Brain - What every programmer needs to know about cognition’. Naast al deze werkzaamheden vindt ze ook nog tijd om zelf te programmeren, waarbij zij zich met name richt op haar project Hedy. Dit is een in Python en TypeScript gebouwde programmeertaal die vooral is bedoeld om kinderen gradueel kennis te laten maken met de soms ingewikkelde syntax van ‘volwassen’ programmeertalen. “De taal is laagdrempelig en je maakt gaandeweg kennis met de syntax van een geschreven taal. Door de mogelijkheid om in je eigen moedertaal - bijvoorbeeld Nederlands of Chinees - te werken, is de leercurve minder steil voor kinderen die het Engels nog niet helemaal machtig zijn.”

Een getraind brein werkt anders

Felienne vertelt over haar werk als onderzoeker aan de Universiteit Leiden: “Deels is dit cognitief onderzoek, dus over de manier waarop je denkt bij het programmeren. Het andere deel is technisch, want als je weet hoe je mensen kunt leren programmeren, merk je dat niet alle programmeertalen daar even geschikt voor zijn.” De conclusies die ze trekt, hebben lang niet alleen betrekking op kinderen; ook professionele programmeurs hebben baat bij haar werk. Het meest recente boek van Felienne geeft dan ook tal van praktische tips en aanbevelingen. “Je bent in je werk constant aan het leren. Als je begint aan een tweede of derde taal gebeuren er al snel heel andere dingen dan je verwacht, juist omdat je ervaring hebt met een andere taal.”

Veel ervaren programmeurs onderschatten het belang van het langetermijngeheugen, constateert Felienne. “Als het gaat om logica en concepten is het idee vaak dat je die niet zo goed hoeft te kennen, omdat je het toch allemaal kunt opzoeken. Dat is een beetje een misvatting. Vergelijk het met het leren van Duits. Als je geen enkel woord kent, kun je wel een woordenboek pakken, maar ga daarmee maar eens lekker een krantenartikel in het Duits lezen. Dat schiet niet op. Als je de helft van de woorden kent, gaat het al beter en met tachtig procent gaat het prima; dan moet je hooguit af en toe eens een woord googelen. Ervaren programmeurs zitten op dat laatste niveau en vanuit hun situatie geredeneerd hoef je inderdaad niet ‘alles’ te weten. Maar als advies aan bijvoorbeeld een junior-collega die een nieuwe taal moet leren, vind ik ‘zoek het gewoon even op’ niet zo geslaagd als benadering. Als er niet genoeg aandacht is voor het leren van de syntax en de concepten van de taal, is het geen goed advies. Als je het zou volgen, zit je de hele dag in je browser van alles uit te zoeken. Daardoor ben je de flow waarin je zou moeten zitten met programmeren ook wel kwijt.”

Leer beter code lezen

Met de lessen uit het boek van Felienne is het mogelijk om makkelijker een programmeertaal aan te leren, maar ook het cognitieve proces van een ander beter te begeleiden. Dit zou moeten zorgen voor software met minder bugs, maar ook voor minder frustraties over en weer. Met de huidige tekorten op de arbeidsmarkt trekt de IT-sector al jaren zij-instromers aan. “Daardoor zit je bijvoorbeeld als ervaren programmeur met een zij-instromer. Als expert is het soms best lastig je te verplaatsen in iemand die dat niet is. Iets wat voor jou heel goed werkt, werkt voor een beginner niet altijd goed. Dan kun je wel zeggen: ‘Alle documentatie staat op Github, stuur me maar een pull request als je klaar bent’, maar dat gaat ’m waarschijnlijk niet worden. Als junior word je er meestal ook heel onzeker door. Dat is frustrerend, voor beide kanten.”

Developers die weten hoe cognitie en leren programmeren met elkaar interacteren, kunnen daar veel plezier van hebben, betoogt Felienne. Niet alleen bij het begeleiden van een ander, maar ook bij hun eigen werk. Zo gaat ze specifiek in op het lezen van code. “Je scrolt er doorheen, maar hoe bepaal je of iets goed of fout is? Wat is het design en van welke filosofie is uitgegaan? Dat laatste is soms vaag, bijvoorbeeld omdat de documentatie ontbreekt of omdat verschillende programmeurs hebben bijgedragen en niemand het antwoord echt weet. In het ene project is optimalisatie belangrijk en mag dat ten koste gaan van leesbaarheid. Voorbeelden daarvan zijn de Marsrover en een complexe game. Bij zulke projecten heeft het niet zoveel zin als iemand caching gaat verwijderen met het oog op leesbaarheid.” Hoewel de achtergrond van het boek wetenschappelijk is, probeert Felienne voor haar doelgroep heel bondig te zijn. “Programmeurs moeten al zoveel lezen, dus ik geef praktische tips over hoe je een tekst kunt scannen, met daarbij variabelen die je er goed bij kunt gebruiken.”

Schrijf alleen de variabelen op

We vragen Felienne of ze alvast een tip kan geven, vooruitlopend op de Tweakers Developers Summit. “Iets dat ik heel leuk vind en dat ook heel eenvoudig te doen is: negeer alle structuur, de klassen en wat er verder nog gebeurt, in een stuk code dat je nog niet kent. Schrijf alleen de namen van de variabelen op. Doe dit vooral als het gaat om een taal die je niet of niet meer gebruikt. Je komt dan snel in een situatie waarbij het zo oncomfortabel wordt dat je denkt: ‘dit heeft geen zin meer’. Je checkt dan mentaal uit, wat echt zonde is. Maak het vervolgens behapbaar. Wat leer je uit de programmeerconcepten en kun je aan de hand daarvan al zien wat er gebeurt? Als je vervolgens een stukje niet begrijpt, kun je dat ook heel concreet aan je eigen team voorleggen om de betekenis in die context te begrijpen. Dat is een manier om je voorkennis te activeren, zonder dat je die akelige, ellendige code in PHP, C++, Rust, Python of wat dan ook moet bekijken. Het enige dat je nodig hebt, is een leeg Word-documentje of een kladblok. Begin met de concepten en probeer ze te begrijpen. De volgende keer kijk je naar de structuur en daarna naar de verschillende technieken die zijn gebruikt. Zo kom je steeds een stap verder.”

Het moment van ‘uitchecken’ herkent Felienne zelf maar al te goed. “Laatst had ik het bijvoorbeeld nog, toen ik een stuk PHP aan het lezen was, een taal die ik al twintig jaar niet meer gebruik. Ik kan het echter ook hebben bij de Hedy-codebase waarvan ik de hoofd-maintainer ben maar waar ook een stuk of twintig anderen aan werken. Soms is het daarbij alsof iemand anders jouw huis heeft opgeruimd en je niets meer kunt vinden. Als je dat niet wil, moet je het natuurlijk niet op GitHub zetten. Toch is het ook belangrijk dat het opensource is en dat andere programmeurs issues oplossen. Je moet toch even over dat moment heen. Bij programmeren hoort het aanleren van nieuwe technieken, maar een ander deel is ook dat je moet leren dealen met discomfort. Hoe vaker je door zo’n moment komt, hoe meer vertrouwen het geeft dat het je de volgende keer ook lukt.”

De Tweakers Developers Summit voelt als thuiskomen (127.0.0.1). Mis het event op 23 juni niet! Lees via de buttons hieronder alles over het programma, tickets en andere belangrijke zaken.

devsummit

devsummit

Kijk hier voor het privacybeleid van Tweakers: https://tweakers.net/info/algemene-voorwaarden/privacy/

* We volgen het COVID-19-beleid vanuit de overheid dat in juni 2022 voor evenementen geldt. Mocht het evenement in juni niet door kunnen gaan vanwege eventuele maatregelen, dan worden de kosten van je ticket gerestitueerd.

Blokkenschema Dev. Summit 2022

Reacties (87)

Sorteer op:

Weergave:

Wat apart dat haar boek (bij bol.com) duurder is als e-book dan als paperback.
Als je ziet dat Follina gebruik maakt van een simplele buffer overflow in Windows MSDT van meer dan 4096. Dan lijkt het me vrij duidelijk dat de "doorgewinterde" programmeurs bij Microsoft inderdaad nog wat bij kunnen leren.
/rant
de laatste paar maanden bezig geweest met zowel C als Python.
sinds deze week niet meer, nu weer gewoon C ( en bash en Dockerfiles )
van Rossem had Python tortoise moeten noemen, wat een trage baggerzooi.
/rant
en dan 300 euro uitgeven om te horen dat Python cooler is dan C ? Nee ?
Python is vooral makkelijker, zeker niet sneller dan C. Zeker ook door de syntax, heb ik amper iets met Python gedaan. Soms kun je er niet omheen.
Ik ben heel blij met Python omdat het voor veel mensen werken met datamodellen en kekke grafiekjes ineens heel haalbaar is geworden. Echter, enige bescheidenheid mbt snelheids claims wanneer de code er eenmaal staat is soms ver te zoeken.

De interoperabiliteit met andere producten en projecten is dan wel weer geniaal.

Mixed bag.
Poeh, wat een prijzen! Dagje Wildlands of Defqon is goedkoper. André Rieu komt in de buurt. ;) \rant
Menig werkgever zal dit toch graag vergoeden?
En anders is 300 ook niet zo'n ramp. Als je met z'n vieren gaat stappen ben je dat ook kwijt.
En anders aftrekken van de inkomstenbelasting, zal ook rap 100,- schelen.
He? Er staan dik 40 sprekers op het programma. Dit is een event voor professionals, door professionals. Dat mag best wat kosten.
André Rieu probeert anders altijd onder de 100 euro te blijven zodat 'iedereen' die wil erbij kan zijn. De prijs lijkt aardig op de Dev/Techdays van weleer, daar waren meer lezingen en sprekers.

[Reactie gewijzigd door 7ven op 22 juli 2024 17:36]

Voor software-development verschijnen voortdurend nieuwe talen. Spannend natuurlijk, want ze bevatten steeds veel nieuwe features.
Na de eerste twee zinnen al gestopt met verder lezen.
Volgens mij zou het beter zijn dat programmeurs gaan leren om NIET MEER TE PROGRAMMEREN.
Want er wordt nog veel te veel 'code geschreven' terwijl we voor goede oplossingen voor bedrijfsproblemen
vaak veel beter naar low-code en andere SAAS diensten kunnen kijken.

Dan blijven er een handje vol programmeurs over die nog steeds code schrijven, met daarnaast
veel meer bedrijfsprobleem oplossers die voor 90 % geen 'code meer schrijven in hun favoriete taal'
maar oplossingen verzorgen zonder echt te programmeren...

Maar ik vrees dat het nog heel lang gaat duren voor dat het zo ver is, omdat de programmeurs
hun beroep zelf in stand houden. En leveranciers en dienstverleners ook.
Want al die mensen en bedrijven kunnen er goed geld aan verdienen.

Op dit item kan niet meer gereageerd worden.