Wouldn't any accomplished professional look at their own industry and feel this way? I can't imagine any medical doctor who would look at state of the art in health care and say, "Our industry is perfect!"
I think sometimes as developers, we need to cut ourselves a little slack.
Sure we need to continue to move the state of the art forward. But sometimes we do get stuff done even in spite of our industry's imperfections. And some people find software pretty useful even with two different versions of PNG image loading code.
Last year I purchased a new tractor for my farm to replace an aging machine. I ended up with one from the same company, only thirteen years newer. The new tractor is definitely much more comfortable to operate and has a nicer appearance to onlookers, but when you start to look at the details, the thing is not all that much different than the one it replaced.
For example, the old tractor had a couple of problems that would crop up when it was cold. Nothing serious, but definitely annoying. The new tractor exhibits the exact same problems in an identical fashion. Thirteen solid years of engineering and the only thing that really changed was some improvements to the user experience.
And that sounds a lot like the software industry – a new interface on top of the same old technology. With that, I imagine you are right that virtually all industries have the same problem.
It's important to step back and take a broad-based perspective. Are you complaining about something that saps you 5% (which can be annoying) or 90%? People complain about both, and it's not easy to tell which is the case just from the volume of complaint.
Across the software industry, we lose an incredible amount of time to the maintenance of bad code. The average professional programmer writes about 250 lines of new code per month. Most large software companies have zombie legacy systems that have ceased to grow but have one or more full-time developers only on maintenance.
So, yes, there is a problem. The way we are doing things, as an industry, is terrible. On the upside, this means that there's a lot of profit potential in improving engineering practices.
Instead of, say, adding a new feature to a large project, let's lay a new subway line in New York. Better make sure that it works with the current signaling system, and can accomodate every train that's on the lines now. Oh, and before you start digging, you better check that you're not cutting across existing power, water, steam and gas lines. Not to mention other tunnels, building foundations, mole people colonies, etc.
I think sometimes as developers, we need to cut ourselves a little slack.
Sure we need to continue to move the state of the art forward. But sometimes we do get stuff done even in spite of our industry's imperfections. And some people find software pretty useful even with two different versions of PNG image loading code.