Meer refactoring en Hannah Arendt

Wanneer ontwikkelaars refactortaken apart inplannen of refactoren nalaten omdat ze er geen toestemming voor hebben, dan is dat een teken dat ze de activiteit van het refactoren fundamenteel verkeerd begrijpen. Helaas is dat misbegrip stevig verankerd in de wereld van de softwareontwikkeling dankzij de metafoor van technische schuld.

Waar zit de fout?

Mijn collega bracht een argument in dat vaak wordt genoemd als ik mensen vertel over testen via de voordeur: maar door de code direct aan te roepen, geven mijn tests onmiddellijk feedback over waar de fout zit. Als deze tests beginnen te falen, dan weet ik zeker dat daar de fout zit. En dat scheelt tijd in het debuggen van de code. – Maar dat laat de volgende vraag onverlet: is een unittest (waarbij “unit” wordt opgevat als “eenheid van code”) het beste middel om erachter te komen waar de fout zit?

De wet van Postel

Het is niet de verantwoordelijkheid van de aanroepende partij om de input van een functie te schiften opdat er valide waarden worden meegegeven. Een functie moet zo eerlijk mogelijk zijn in wat het accepteert – maar daar waar er speelruimte bestaat is het de verantwoordelijkheid van de functie zelf om de inputs te valideren.

Bugs zijn defecten

Een softwareontwikkelaar is: iemand die defecten fixt die hij zelf heeft geïntroduceerd.

Waarom wil Carl niet pairen?

Scenario: Alice en Bob bespreken hun positieve ervaringen met pair programming in de Sprint Retrospective. Ze stellen voor het vaker te doen. Carl is defensief. “Ik vind het niet fijn als een ontwikkelaar op mijn vingers meekijkt hoe ik code typ.” – Wat is hier aan de hand?

Karl overdenkt een metafoor

Via code praat je met de geest van een andere ontwikkelaar. Hij zegt: dit is in hoeverre ik het probleem heb gesnapt. Soms antwoord je: maar ik weet nu beter!, of: over dat scenario had ik nog niet nagedacht! – Via code praat je met een ontwikkelaar zoals je met een schrijver praat via een boek. – Maar tegelijkertijd zegt men toch ook: de Auteur is dood.

De allegorie van de grot

Plato zegt: stel je een groep mensen voor, vastgebonden – in een grot dus. Hun hele leven lang zien ze alleen de schaduwen op de muren, van bewakers die verhalen vertellen voor een groot vuur. Die groep mensen zou denken dat de schaduwen op de muur de echte dingen zijn.

Ik loste het op met een monad

Een soort van monad. Denk ik.

De zen van testen

Een test is beter dan geen test. / Geen test is beter dan een flaky test. / Een eenvoudige test is beter dan een complexe test. / Maar eenvoud betekent niet: simplistisch.

Bind, Map en Match

Ik schrijf al twee jaar op dit blog over functioneel programmeren in C#, dus je zou denken dat ik de basis inmiddels wel een beetje zou moeten beheersen – en toch overkomt het me nog regelmatig dat ik uitroep: och, zit het zo! Zo had ik onlangs – na een hoop gepiel (en een beetje hulp van Scott Wlaschin) – een openbaring met betrekking tot de Map- en Bind-functies.