Profielfoto
Karl van Heijster

softwareontwikkelaar · filosoof · spreker

Erfenissen van waterval

Op het Najaarsevenement van TestNet betoogde ik dat testers een belangrijke rol hebben te spelen in het reviewen van code. Tijdens de voorbereiding van mijn presentatie realiseerde ik me dat mijn team, alle Agile ambities ten spijt, in zijn denken nog diep verankerd zit in het gedachtegoed van de watervalopvatting van softwareontwikkeling.

Revert!

Drie dagen hebben we de boel lopen te debuggen. Bij elke nieuwe wijziging leken we verder te zakken in een onverklaarbaar moeras van verborgen afhankelijkheden. Op een gegeven moment was ik het zat. Ik zei: “Ik ga de boel terugdraaien.” (Mijn collega, verslagen, zag al zijn harde werk voor zijn ogen in vlammen opgaan.) “Niet alles, maar wel alles in die ene class. En dan ga ik je wijziging één voor één opnieuw toepassen, net zolang totdat er tests falen.”

Waarom, wat en hoe

Waarom bestaat deze code? – wat doet het? – en hoe doet het dat? Ik maaide het gras van mijn achtertuin, toen me inviel dat het beantwoorden van die vragen niet beperkt blijft tot het lezen van code. Elke ontwikkelaar stelt zichzelf precies dezelfde vragen als deze code gaat schrijven. En een goede ontwikkelaar beantwoordt ze in die volgorde.

Sprints zijn geen miniwatervallen

Een tijd geleden viel ik midden in een discussie over de zin en de onzin van Scrum. De ene partij vond Scrum een vooruitgang ten opzichte van de traditionele manier van werken. De andere partij vond Scrum onzin. Ik vond z’n argumenten tegen Scrum onzin.

Nog enkele reflecties op pull requests

Onlangs hield ik een praatje op het werk over de edele kunst van het pull request. Het gesprek dat naar aanleiding daarvan ontstond, vond ik erg waardevol. Het geven van een goede presentatie werkt in bepaalde zin net als software ontwikkelen: je maakt een eerste versie, legt die voor aan een groep mensen, en gebruikt hun feedback om een betere tweede versie te ontwikkelen.

Schone interfaces, simpele implementaties

Het dilemma was als volgt: ofwel de deadline missen met een “goede” oplossing (dat wil zeggen: een oplossing die de REST-standaard volgt), ofwel de deadline halen met een slechte (die een uitzondering introduceert in de opzet van onze API). Maar: dat is een vals dilemma.

Evolutionair programmeren

Wat evolueert in de evolutieleer? Wat is de locus van evolutie? – En natuurlijk, dat is de beroepsdeformatie: wat evolueert er in onze codebase?

Coderen met luchthaken en hijskranen

In mijn vakantie las ik Darwin’s Dangerous Idea van Daniel Dennett, het boek is een aanrader. Omdat ik een beroepsdeformatie heb, deed het me aan softwareontwikkeling denken.

Pseudofilosofische onderzoekingen (I & II)

Ik ga vandaag geen blog schrijven. Ik zal genoegen nemen met enkele aantekeningen die ik maanden geleden op papier zette, geïnspireerd door Marcus Aurelius en door Ludwig Wittgenstein. Het spreekt voor zich dat mijn overpeinzingen beduidend minder diepzinnig zijn dan die van beide grootheden.

Doe je wel écht aan continuous integration?

Clare Sudbery stelde een goede vraag op GOTO Amsterdam: doe je écht aan continuous integration (CI), of denk je dat alleen maar? Dat roept de vraag op: wat is “echte” CI?