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 nurseries. And usually, once one project is completed, 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 projects.

I lived once in a big, old house which had stood for over 80 years. It'd been split up so that a couple lived in the back portion, I lived in the front half, and there was a basement apartment. Sound can travel in funny ways in such old houses, split up like that. 

You see there are the remenants of what were once ducts for the purposes of a forced air central heating system, all through the house. The air vents are now partially 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, I was 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, disruptive to the residents, and damaging to the house. So they stay. Silently embedded within the walls. 

Much like the infastructure portions of almost every software design that's ever been written. Look at your codebase. Is there something in there, some remnant of infrastructure that was built with the greatest of hopes and expectations, only to be roundly replaced when you understood the problem better? Has it left a legacy that occasionally flares up or acts as the conduit for some other misbehaving component in the project?

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. 

And yet that code sits there, inside your digital walls.

Software Projects can be 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. 

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