In het boek ’The pragmatic programmer‘ hebben Andrew Hunt en David Thomas het over de entropie van software. Hiermee bedoelen ze de schijnbaar onvermijdelijke en altijd maar toenemende chaos in de code van een stuk software. Ze trekken een parallel met de broken window-theorie, die stelt dat de aftakeling van een wijk begint bij iets kleins, zoals een ingegooid raam. Ze concluderen dat software-entropie, of softwarerot, voornamelijk een cultureel probleem is: een klein stukje slechte code zet een proces van aftakeling in gang met als uiteindelijke resultaat een fragiele brij van ondoorgrondelijke spaghetticode waar niemand meer wijs uit kan.
Hoewel softwarerot helaas een realiteit is, en instabiele software het resultaat, denk ik dat Hunt en Thomas een belangrijke oorzaak over het hoofd zien: software-engineers die geen idee hebben waar ze mee bezig zijn. Niet doordat ze incompetent zijn (nou ja, dat ook in sommige gevallen), maar doordat ze om een aantal redenen niet voldoende weten over de onderliggende ontwerpfilosofie van de code waar ze aan werken.
Alle software die wordt geschreven, heeft een ontwerp: een set van aannames en ideeën, een filosofie, die bij elkaar genomen bepalen hoe de code eruit komt te zien, welke abstracties er zijn en hoe dit alles gestructureerd wordt. Dit kan impliciet gebeuren, zonder enige vorm van documentatie, of het resultaat zijn van een lang, zorgvuldig proces, maar het is er altijd.
