A mini-rant about my profession…

I’ve just spent the last two days fighting a software problem at work, one that has kept me from making any progress on the task I was assigned. It wasn’t a problem with the program thatI was assigned to fix, it was a problem with the tools I was trying to use to find the problem in the program in the first place. The fact that the tools are also software, and the fact that the tools also have bugs has been causing far too much stress, mainly because it was so ultimately wasteful of time (and of my limited sanity!). As I drove home last night, after 10 utterly fruitless hours spent trying variation after variation of settings and configurations and watching them all fail to make any difference at all, I thought of ways of trying to describe to non-programmers why I was getting stressed. After all, surely software should be easy to do, and far less stressful than something physical like building a house. As I drove along, I realized a pretty good analogy in house-building.

Imagine trying to build a house, when you are limited to only the tools and supplies you have with you.

Imagine that all the tools you have to use, all the supplies you have to work with, were made with other shoddy tools.

Imagine that the tools work about 80 percent of the time. Your hammer’s head flies off the handle at odd times with no warning, your screwdriver’s handle comes off the shaft, your power drill bursts into flames. Always randomly, always without warning, and at least once a day. And you can’t replace them.

Imagine your saw is made of high-quality aircraft titanium, but it’s missing about 20% of its teeth, and is slightly warped.

Imagine you have to pour a concrete foundation for a 1200 square foot house, but you only have one 5 gallon bucket.

Imagine that the architect keeps bringing in changes every day, on things you’ve already managed to put together.

Imagine the person wanting the house insists that you put in PVC pipe, but you’re not allowed to cut or bend any of the pipe.

Imagine they also want a sophisticated air conditioner installed, but won’t tell you where, and won’t give you the installation instructions, and won’t give you the specialized parts to make it fit in and work with the power.

Imagine building a house this way, knowing you can only use what you have, even if you need more or better supplies and tools. This is what developing software is like in the 21st Century, and has been for the past 30 years of my career. We could have more robust tools, that are at least as dependable as a carpenter’s, we could have easily adaptable procedures that can handle changes to design, and we could build software that is more robust and less fragile.

We could, if there were enough people who cared, who were willing to see (and admit to) the problems, and who were willing to spend the effort in time and money to fix the problems. Unfortunately there are far too many people, both technical and management, who accept the status quo, each for their own reasons. Management is more concerned about the illusion of saving money, even though shoddy tools and the lack of good ones causes much more waste of time, which is really money after all.

Many technical people, on the other hand, don’t mind the difficulty that using poor tools entails, and often don’t even know that better ways are possible.

More on that in another rant.

Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *