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.