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.

Refactoring en Hannah Arendt

Yvonne Lam stelt dat er een betere metafoor voorhanden is voor dat wat we gewoonlijk “technische schuld” noemen: huishouding (housework). Het deed me aan Hannah Arendt denken. – Beroepsdeformatie, denk ik!

Gedrag versus structuur

Een systeem dat niet precies doet wat het moet doen, maar wel eenvoudig aan te passen is, is meer waard dan een systeem dat precies doet wat het moet doen maar slechts met grote moeite gewijzigd kan worden. Want het gedrag van een systeem zal veranderen, hoe dan ook. De wereld verandert, en daarmee de wensen van onze gebruikers en stakeholders. Het is onze taak als softwareontwikkelaars om daarop voorbereid te zijn, en een systeem te ontwikkelen dat daarop voorbereid is.