If Software Engineering Was Like Other Disciplines…

In the pursuit of home improvement I’ve had to remove andreinstall several toilets over the past year, sometimes redoing thesame toilet more than once due to mistakes made on the firstouting: all of the preparation in the world sometimes isn’t enoughif you haven’t practically experienced a task before.

I’ve gotten to enjoy the removal and installation of wax rings,the wonderful varieties of flanges, and the unfortunate results ofusing too thin of a wax ring when the newly installedflooring raise the toilet’s height just a little too far.

Sure I could pay someone to do this, but sometimes I enjoy, err,getting my hands dirty and learning these things myself.

The thing I marvel at is how terribly hackish the interfacebetween toilet and sewage system really is — you have to align avery heavy toilet perfectly over twoheld-up-only-by-good-intentions bolts, often back-breakinglyleaning over in very tight confines while setting it down justperfectly on the bolts; bolts that are barely contained by a flangethat is the end piece of some fixed plumbing, meaning that if youovertighten then you’re breaking a pipe that’s a massivepain to repair.

It’s close to impossible to gauge the difference between nottight enough and too tight with these sorts of things, but it’s acostly mistake if you go too far one way or the other (too tightand you have a busted flange or toilet base, but if it’s too looseyou could have movement that breaks the seal, which causes floorwarpage, which breaks the seal more, which causes more warpage,which pushes the unit up breaking the flange): Sort of like the oilchange technicians who stripped the oil plug and didn’t bothertelling me until it popped off, creating an environmental disasterin my driveway, or the auto mechanics that over-cranked the sparkplug, stripping the aluminum head.

Of course the toilet interface demonstratably works,given that there are billions of non-leaking,non-broken facilities in operation right now, but technicallyit is, in my opinion, a complete hackjob of an interface.

In many ways it’s like HTML and browsers that will happily adaptto many transgressions of the already loose spec.

Our world has endless numbers of these “there has to be a betterway” designs, but because of low expectations, the inertia of thestatus quo, lots of workarounds, and the training and experience ofthose who have to deal with it, it’s fine.

I bring this up because software is endlessly compared to otherdisciplines, usually with the software industry cast in a poorlight. 

“Why can’t we build software like we build bridges?”, weendlessly hear.

People say this because they have no idea how hacked out (andoften over-engineered and costly — have you looked at the cost ofbuilding a little road over a gap these days?) the business ofbuilding bridges, or airplanes, or toilets, often is.

It isn’t as perfectly engineered as they probably imagine.

Sidenote – How in the world does an entirely ambiguous word like”biweekly” or “bimonthly” continue to be used Biweekly issometimes used to indicate every other week, other timesused to indicate twice a week. Bimonthly has the same confusion,either meaning every two months, or twice a month.