John McDowall

Firmitas. Utilitas. Venustas.

Software and Old Houses

 This old House Old Houses are products of accretion. Over the course of many years they gather new extensions, tweaked facades, upgraded central or under-floor heating systems, alarm systems, downstairs washrooms and nursereys. And usually, once one project is completled, you’ll bask in the glow of it for a while until it’s forgotten about and the next one embarked upon. Just like Software Design.

The house I live in is big and old: over 80 years. It’s been split up so that a couple live in the back portion, my wife and I live in the front half, and there’s a basement apartment. Sound travels in funny ways in old houses.

You see, there are remnants of what were once ducts for the purposes of a forced air central heating system, all through the house. The air vents are now sealed, but the ornamentation on the baseboard that gives away their purpose is still there. The ducts lie embedded within the walls still. Long forgotten about, these heating ducts were probably installed at great expense at the time, for what was felt to be the ultimate in home comfort: hot air blown into the rooms from a central heater!

At some point, the old air heater was pulled out, radiators were found and installed, and a fancy Swedish boiler system now silently and efficiently pumps hot water around the piping and heats the house. And the ducts remain, in the walls. Now sealed up and silent. Except for when they carry sound in funny ways. Old houses are like that.

Occasionally, we are treated to the sounds of someone somewhere else in the house enjoying vigorous, short lived coitus, the echoes of it carried inside the bones of the house, inside these long forgoten about ducts that serve no purpose. Should the ducts be ripped out? That would be very costly, and damaging to the house. Ripping them out would deliver no real value to anyone. So they stay. Silently embedded within the walls.

Those ducts are much like the infastructure portions of almost every software design that’s ever been written. Look at your own current project’s codebase. Is there something in there, some remnant of infrastructure that was built with the greatest of hopes and expectations, only to be sidestepped when the problem was more fully understood?

Removing that code might be too hard now, because nobody writes perfect software. Some brittle tests somewhere might flare up, or a method call somewhere might explode, in a certain circumstance. Deadlines are looming and everything’s on fire. Maybe you work in a job where your boss says things like ‘You don’t get paid to remove code, you get paid to write it!’.

So that code sits there, inside your digital walls.

Software Design is like building houses. The construction continues long after the thing is ‘finished’, and you end up living with the choices you make for a long time, usually forever. Sometimes it’s ok to paper over some minor cracks and live your life.

And sometimes, in the night, you hear odd noises carried by those old ducts.

Comments are dead! You can probably read more about this on Hacker News. If not, drop me a line at john at mcdowall dot info.