Profielfoto
Karl van Heijster

softwareontwikkelaar · blogger

Historie van Koenraad van Codeghat

Koenraad bestijgt dapper ’t ros / van de debugger, bereid / te dolen onder de linde. // Hij stapt door het beslisbos / dat hem naar hier heeft geleid / maar kan de oorzaak niet vinden.

Hoe review je eigenlijk code?

Hoe lees je eigenlijk code? Waar begin je? En in welke volgorde loop je code door? - En zit er verschil tussen het lezen van code tijdens je programmeerwerk en tijdens een code review? Ik stelde mezelf onlangs die vragen, na in Felienne Hermans' The Programmer’s Brain te hebben gelezen dat gevorderde programmeurs op een andere manier code lezen dan nieuwelingen.

Wat is jouw mentale model?

Eerder schreef ik erover waarom het zo belangrijk is om code die data ophaalt te scheiden van code die data manipuleert. Ik kan me voorstellen dat ik lezers heb die denken: joh, dit zijn toch allemaal open deuren? Misschien hebben die lezers gelijk. Maar aan de andere kant: het aantal keren dat ik code heb kunnen verbeteren door het ophalen en manipuleren van data te scheiden, vertelt een ander verhaal. Wellicht loont het zich om daarom kort te reflecteren op een aantal redenen waarom deze goede gewoonte niet stevig verankerd is in het hoofd van elke ontwikkelaar.

Scheid data ophalen van data manipuleren

Het aantal refactoravonturen (met goede of slechte afloop) dat ik heb beleefd is, inmiddels al lang niet meer op één hand te tellen. In de loop der tijd is een terugkerend fenomeen me opgevallen: code waarin het ophalen van data niet wordt gescheiden van het manipuleren ervan. Laten we dat eens wat nader bekijken.

Spelen met Options

Options vormen de brug tussen totale en gedeeltelijke functies. Het is een type dat de eigenlijke return value van een functie wrapt. In het geval dat de mapping zinvol is, dan geeft de functie een Option terug met daarin de gezochte waarde. En als de mapping dat niet is, dan geeft deze een Option terug zónder die waarde. Wat het resultaat dus ook is, één ding weet je zeker: je krijgt een Option terug. De functie is altijd eerlijk.

Gedachten naar aanleiding van een PI-planning

Ik had onlangs het geluk aanwezig te mogen zijn bij een Program Increment-planning - kortweg: PI-planning. Het was de tweede die mijn werkgever ooit organiseerde, en de eerste waar ontwikkelaars bij aanschoven. Het was een hele ervaring. En ik zal in wat volgt kort reflecteren op die ervaring.

Objectgeoriënteerd en functioneel BTW berekenen - Revisited

Ik plaatste een tijd geleden wat kanttekeningen bij mijn aanpak Enrico Buonanno’s uitdaging om een objectgeoriënteerde BTW-calculator te schrijven. Zo zette ik mijn vraagtekens bij het feit dat ik zijn oorspronkelijke model één op één overnam. Die keuze bracht met ertoe een aparte VatCalculator-class te definiëren. En hoewel die objectgeoriënteerd was opgezet, viel deze makkelijk om te schrijven naar een functionele variant. De vraag wierp zich op: hoe objectgeoriënteerd is die oplossing? Is de vergelijking daarmee wel eerlijk? Hoe zou een “echt” objectgeoriënteerde oplossing eruit zien?

Programmeren op de beat - Vol. 2

Eens per jaar verandert mijn blog over softwareontwikkeling in een schaamteloze gelegenheid voor mij om over muziek te praten - en vandaag is die dag! Deze keer: met video’s van liedjes die een link hebben naar mijn vakgebied, hihi!

Wat ik leerde over coachend begeleiden

Onlangs mocht ik voor het eerst in lange tijd mijn CV weer eens updaten. Ik heb namelijk met succes een cursus coachend begeleiden op Hogeschool Windesheim afgerond. Mijn dank daarvoor gaat in eerste instantie uit naar cursusleidster Herma Ronda en mijn medecursisten, wier enthousiasme me inspireerde om op een heel andere manier naar mijn eigen communcatie te kijken. Daarnaast ben ik dank verschuldigd aan mijn collega’s en schoonzus, die zo dapper waren om - op video nota bene! - een coachingstraject met mij in te gaan. Dus: dank, dank, duizendmaal dank! Ter afsluiting van dit hoofdstuk, citeer ik voor deze blog vrijelijk enkele punten uit mijn reflectieverslag.

De elf rollen van variabelen

Pas wanneer de vanzelfsprekendheid van code in het geding komt, gaan we nadenken - écht nadenken - over wat er op je scherm staat en waarom. Pas dan wordt de vraag “Wat doet deze variabele hier precies?” relevant. Goed, vraag jezelf nu eens af: als dat moment komt, hoe beschrijf je de rol van een variabele dan? - Heb je enig idee waar je moet beginnen bij het beantwoorden van die vraag?