Over de boekenclub

Het is geen geheim: ik hou van lezen – literatuur, filosofie, maar ook: vakliteratuur. Wie mijn toplijsten van de afgelopen vijf jaar erop naslaat, vindt een enorme rijkdom aan programmeerkennis. Over softwareontwikkeling lezen heeft mijn professionele vaardigheden verbreed en verdiept, maar me vooral een heleboel meer plezier geschonken in mijn werk. Een liefde voor lezen – zelfs al is het voor je werk – is een cadeau dat ik iedereen van harte gun.

Natuurlijk, niet houdt van lezen. Sommige mensen leren bijvoorbeeld liever door het te doen (zie ook deze blog) of door de filmpjes op YouTube te kijken.

Niet leren

En andere mensen… leren eigenlijk niet echt – niet bewust, in elk geval. Ze laten zich leiden door wat er op hun pad komt in hun dagelijkse werkzaam. Als een collega een nieuwe werkwijze of techniek voorstelt, dan leren ze genoeg om daarmee te kunnen werken. En zo niet, dan coderen ze zoals ze altijd al gecodeerd hebben.

Ideaal is dat niet. Ik heb in gesprekken met mijn leidinggevende mijn verbazing wel eens over uitgesproken over het feit dat sommige van mijn collega’s ervoor kiezen honderd procent van hun tijd aan operationele werkzaamheden te besteden. Ik begrijp de kortetermijnvoordelen daarvan, maar op de lange termijn kan zo’n werkverdeling alleen maar problemen opleveren.

(En die problemen zijn niet alleen voor rekening van de werkgever. Ik heb mijn tanden meermaals stukgebeten op het willen doorvoeren van een verbetering – ontwikkelaars die tests schrijven, bijvoorbeeld, of YAGNI of continuous integration – die op weerstand van het team stuitte omdat het idee te ver buiten hun comfortzone van geaccepteerde werkwijzen lag. Daar kom ik later nog op terug.)

Een pril begin

Voor de vuist weg heb ik eens geroepen: “We zouden eigenlijk elke nieuwe werknemer een boek mee moeten geven als ‘ie begint. Met als (impliciete?) boodschap: we verwachten dat je dit leest. We verwachten dat je tijd vrijmaakt voor zelfstudie.” – Erop terugkijkend, was dat het prille begin van de boekenclub die ik maanden later oprichtte.

Het begon met de start van een junior. Mijn leidinggevende en ik sparden: “We kunnen haar een boek geven – natuurlijk –, maar dan laten we een kans liggen. We halen daar meer uit als we de lessen uit dat boek ook met haar bespreken.” – “En als we ze daarnaast in de praktijk brengen.” – En vanaf daar was het een kleine stap naar: “Maar waarom zouden we die inspanningen beperken tot onze junior? Waarom zouden we de rest van het team daar niet bij aansluiten?”

En inderdaad, na een balletje opgegooid te hebben in het team bleek er heus wel animo te zijn voor zo’n boekenclub. Vanaf dat moment kwamen we wekelijks bijeen om het over softwareontwikkeling te hebben.

Helemaal zonder slag of stoot ging dat overigens niet. Hoewel ik de steun van mijn leidinggevende had, kwam onze Product Owner al tijdens de eerste of tweede bijeenkomst onze vergaderruimte binnengestormd: de front-ender ontwikkelde een nieuwe feature en had nu een back-ender nodig om een API daarvoor te bouwen! Korzelig antwoordde ik dat hij het komende uurtje nog heus wel zonder ons zou kunnen overbruggen.

Kwaliteit

We lazen Clean Craftsmanship van Robert “uncle Bob” Martin (mijn op twee na favoriete boek van 2022). De keuze voor het boek was niet toevallig, uiteraard. Ik wilde onze junior – en de rest van het team trouwens ook – het belang meegeven van je werk goed en verantwoord doen. Ik wilde de booschap overbrengen: de lat ligt niet bij louter werkende software, de lat ligt bij goed onderhoudbare code die het juiste probleem oplost. Kwaliteit is wat mij betreft kernwaarde nummer één in ons team.

Test-Driven Development (TDD) is de meest prominente manier waarop die kernwaarde concreet in wordt gevuld in Martins boek. Ik vond het belangrijk de boodschap over te brengen dat TDD niet slechts een (alternatieve) manier is om software te ontwikkelen, maar een betere. TDD is, voor een professionele softwareontwikkelaar, niet optioneel.

Dat was een belangrijke les – voor onze junior net zozeer als mijn meer ervaren collega’s, die heel wat meer… laten we zeggen: suboptimale gewoonten hadden om af te leren.

Teamgevoel

Los van de inhoudelijke tips die het boek ons voorschotelde, was de belangrijkste les die ik eruit opdeed hoeveel samen lezen het teamgevoel versterkte. Het boek bracht de neuzen dezelfde kant op en creëerde soort kameraadschap die ik in de jaren daarvoor niet vaak ervaren had.

De leukst aan onze wekelijkse sessies vond ik, verrassend genoeg, de lichtjes te zien opgaan bij de meer ervaren ontwikkelaars. Onze junior accepteerde de lessen van uncle Bob als haast vanzelfsprekend en bracht ze al snel in de praktijk. De senioren liepen over van inzichten-achteraf over waarom eerdere projecten zo moeizaam verliepen. Ze bekeken hun werk ineens vanuit een nieuw perspectief. Maar als het op het in de praktijk brengen van de nieuwe kennis aankwam, vielen ze toch vaak terug op oude gewoonten. Daar lag nog een uitdaging.

Desondanks was voor iedereen zonneklaar: de boekenclub was een succes. Toen we Clean Craftsmanship uit hadden gelezen, trakteerde onze leidinggevende ons op een etentje ter afsluiting – wat het nieuw hervonden teamgevoel alleen maar meer versterkte.

Boekenclub 2.0

Op het eerste succes volgde uiteraard de vraag: en nu? Het antwoord diende zich al snel aan in de vorm van drie nieuwe junioren (en een nieuwe, enthousiaste senior), die overigens allen in een ander team begonnen. De tweede iteratie zou daarom anders van opzet worden: de boekenclub werd teamoverstijgend. Om tegemoet te kunnen komen aan de toegenomen grootte charterde ik een andere senior om het aantal deelnemers in tweeën te kunnen splitsen.

De nieuwe opzet zorgde voor een andere dynamiek. Het was deze keer niet alleen het boek dat ons nieuwe inzichten gaf, maar ook de verhalen van hoe het ontwikkelproces in de verschillende teams wordt ingevuld. Een steeds terugkerende vraag was “Hoe gaat dat bij jullie?” – waar niet zelden drie verschillende antwoorden op volgden.

De nieuwe boekenclub droeg zo bij aan een vorm van teamoverstijgende kennisdeling die ik in de eilandencultuur van mijn werkgever niet vaak mee had gemaakt.

Leesbaarder code

Deze keer lazen we Code That Fits in Your Head van Mark Seemanns. Ik kende het boek nog niet, maar liet me graag overtuigen door de positieve verhalen die ik erover hoorde – en anno nu met liefde bevestig. (Ik verwacht dat het boek wel een plekje op mijn toplijst van dit jaar zal verkrijgen.)

Code That Fits in Your Head zit vol concrete tips over hoe je je code eenvoudiger en beter leesbaar kan maken. Seemann bepleit zijn keuzes zorgvuldig, maar is nooit wijdlopig in zijn argumentatie. Het is een zeer praktische gids in de zoektocht naar betere manieren om code te schrijven – daarin schuilt de kracht van het boek.

Maar er schuilt ook een risico in. Het is verleidelijk om Seemanns lessen ter kennisgeving aan te nemen – “ja,” denk je onder het lezen regelmatig, “da’s logisch.” Die ogenschijnlijke vanzelfsprekendheid bracht de boekenclub die door de andere senior werd geleid ertoe om op een gegeven moment twee hoofdstukken per week te gaan lezen. Maar of dat tot betere gesprekken heeft geleid…?

Lessen

Op het moment van schrijven loopt deze tweede iteratie langzaam op zijn eind – mijn club moet nog drie hoofdstukken. Wat kunnen we concluderen over het resultaat van deze onderneming?

Ten eerste kan gesteld worden dat de boekenclub zijn oorspronkelijke doel heeft behaald: zowel de junioren als senioren zijn er meer dan ooit van doordrongen dat nieuwe dingen leren onderdeel is van hun werk. De boekenclub heeft hen ertoe geforceerd niet hun volledige werkweek aan operationele zaken te spenderen, en daarin schuilt een enorme winst.

Ten tweede heeft de boekenclub ervoor gezorgd dat de kwaliteit van onze code omhoog is gegaan. Ik zie regelmatig pull requests voorbijkomen waarin de lessen van Martin en Seemann in de praktijk wordt gebracht.

Ten derde heeft de boekenclub het teamgevoel versterkt. Mijn collega’s en ik zitten meer en meer op één lijn wat betreft het opleveren van kwalitatief hoogwaardige code. En de comfortzone van geaccepteerde is aanzienlijk uitgebreid: TDD is een haalbaar streven en pair programming is niet meer bij voorbaat inefficiënt. Continuous integration vindt men nog steeds wel een beetje eng – maar daar komen we uiteindelijk wel.1

Ten vierde heeft het een bijdrage geleverd in het afbreken van de barrières tussen teams. Omdat je wekelijks in gesprek gaat met mensen uit een ander team, wordt de drempel om elkaar op te zoeken een stuk lager. Naarmate de boekenclub verder zal groeien, zal onze eilandencultuur, hoop ik, steeds meer op een wad beginnen te lijken.

Niet iedereen houdt van lezen – niet iedereen kan daar de rust of het geduld voor vinden. Maar voor gezamenlijk leren blijken een hoop ontwikkelaars meer dan open te staan. En een boekenclub is daar een uitstekend vehikel voor. Een liefde voor lezen is een cadeau dat ik iedereen van harte gun.


  1. Eén van de boeken die in Boekenclub 3.0 wordt gelezen is, niet toevallig, Continuous Deployment van Valentina Servile. Ik zeg “één van de boeken”, want de groep enthousiastelingen is opnieuw gegroeid en diverser geworden. De tweede groep leest Head First Design Patterns↩︎

bedrijfscultuur · boeken · boekenclub · leercultuur · leermoment · leren · samenwerking · teamcultuur · verandering · werkbalans · werkplezier