Profielfoto
Karl van Heijster

softwareontwikkelaar · filosoof · spreker

Symmetrische en asymmetrische overerving

Code heeft niet alleen esthetische kwaliteiten. Het communiceert ook een intentie, een bedoeling. Code vertelt een verhaal. Zoals de manier waarop een personage wordt geïntroduceerd in een roman, ons iets vertelt over de rol en het karakter van dat personage, zo vertelt de manier waarop we bepaalde concepten in onze codebase vastleggen hoe we deze moeten “lezen”. – Code heeft, net als onze natuurlijke taal, een betekenis.

Overerving, compositie en dependency injection

Mijn collega had overerving toegepast om de nieuwe functionaliteit een plek te kunnen geven. De afgelopen maanden had ik gemerkt dat dit voor hem, en veel van mijn andere teamgenoten, een go to-oplossing vormt om code te kunnen hergebruiken. Maar ik was niet helemaal tevreden met het resultaat van die strategie. Ik voelde meer voor een oplossing die gebruik maakt van compositie. Het leek me een mooie gelegenheid om wat ideeën over deze concepten op papier te zetten.

First time right?

Na afloop van mijn praatje kreeg ik de vraag of ik geloof in het idee van first time right. Mijn antwoord was: “Ik geloof niet dat er zoiets bestaat als first time right. Maar ik geloof wel in first time een stuk beter dan we het nu doen.” Tijd om dat antwoord verder uit te werken, was er op dat moment niet. Maar de vraag bleef wel in mijn achterhoofd spoken. Is het mogelijk om een systeem in één keer goed te bouwen?

Als Shakespeare code had geschreven

Zouden jij en ik elkaar zijn sonnetten geven, / als William Shakespeare code had geschreven? / Zeg maar: brengt i.Compare(thee, summersDay) / je in vervoering of valt dat wel mee?

Drie kernwaarden

Onlangs beschreef ik hoe het formuleren van kernwaarden zou kunnen helpen in het verbeteren van het softwareontwikkelproces. Als oefening heb ik, voor mezelf, drie van zulke waarden geformuleerd, drie zaken die ik persoonlijk belangrijk vind wanneer ik software ontwikkel.

Formuleer je kernwaarden

Hoe ziet softwareontwikkeling er – volgens jou – idealiter uit? Hoe functioneert een ontwikkelteam op de toppen van z’n kunnen? Wat is de verhouding tot hun stakeholders en collega’s? Hoe ondersteunt het management daarin? – Als je dat plaatje eenmaal scherp hebt, wat kun je dan concluderen over de kernwaarden van waaruit je software ontwikkelt?

Logisch-filosofische verhandeling

Ik spijkerde mijn Wittgenstein onlangs bij, het deed me (omdat ik, zie je, een beroepsdeformatie heb) denken aan softwareontwikkeling.

De beste boeken over software ontwikkeling die ik in 2023 las

Lezers en softwareontwikkelaars, opgelet! Net als vorig jaar en het jaar daarvoor en het jaar dáárvoor heb ik dit jaar weer enkele fantastische boeken over softwareontwikkeling mogen lezen. Dit waren mijn vijf favorieten – plus een niet-per-se-aan-software-gerelateerde bonustip.

Codefluisteren

Een goede codefluisteraar kan in een stuk code werken en hoort dan – aanvankelijk zachtjes, maar met ervaring steeds duidelijker – plots een probleem. Het probleem is niet: de code werkt niet. Het probleem is: ik als ontwikkelaar ben nu harder aan het werk dan de code.

Drie feedbackloops die verbeteren met unit tests

Ik ben geneigd te zeggen: alles in het leven wordt beter met unit tests – en dat toont hoe ver ik inmiddels van het padje ben geraakt. – Maar op het gebied van softwareontwikkeling gaat die vlieger wel degelijk op. Toen ik voor het Najaarsevenement van TestNet begon uit te werken waarom testers code zouden moeten reviewen, stuitte ik op drie feedbackloops die geautomatiseerde tests kunnen versnellen.