Is there hope... ?
As you say here, I'm getting the popcorn. I listened to the coverage of this disaster last weekend, with increasing rage over the comments made with apparent lack of proper facts and the self righteous claiming that people taking a risk deserved their punishment. I tried to find some facts, and struggled. It does seem that there is a large pile of reasons why this happened, many of which can be attributed to "it costs too much to do it properly, and we would be driven out of business by our competitors" or to "if I do it properly, my boss will 'tell me off' and I need this job". Link that to the large number of people involved in this environment and it is no wonder there are so many excuses around.
I am getting the popcorn because I think it is time to wake up and realise what has put us in this position, and how difficult it is going to be to sort it out. Consider these; find facts if you have time:
* For years, software has been seen as a cheap way to provide functionality that used to be mechanical or electronic. It is hard to write robust software, even harder to predict problems that might appear years later, when the writing and testing tools have improved.
* We have been taking shortcuts in software education, because we needed so much software that having 10 people who could write bad 'working' code is better than 3 people who write 'safe' code.
* Salaries are so high, because of the shortage of developers; and support contracts are expensive; the only solution if you cannot get your own team for support.
* Support contracts explicitly forbid changes to the software, and charge a lot for making the changes under the contract.
* Support contracts are accepted by 'managers' because they don't know better (or, think they do know better), then cannot change them easily or have to go to court.
* Third party suppliers write code on top of other systems or using libraries, then those are changed by the owners and the third party software is 'quickly fixed' so it works again.
* Software companies issue updates that fix bugs, but also extend functionality or add unwanted features, because that makes it more attractive to non-users but more vulnerable to existing users. You cannot choose bug only updates because that would need too many branches in the codebase.
* Software companies have to add functionality or they can no longer sell it, because similar software does have these features.
* Some industries require the software they use to be certified to some law; the certification rules mean software cannnot be upgraded, and where those rules need a change of law before being changed.
* We are increasingly reaching the point in all technologies where the mechanical elements of a machine still last for 10 years, but the software is out of date in 2 years. It costs extra to code a machine control system so that it can be upgraded; focus on selling a new machine instead, leaving your users with unsupported machines.
* We are reaching the point where fashionable things have replaced durable things, and fashionable things need to be changed quicker, and be cheaper each time, or they will not be saleable. Nobody seems to have the time or money to understand what they want from their gadget, and does not consider what they need to do to replace it for the next one.
* Practices and mistakes by software companies are undermining confidence of their users, who then don't trust what those companies say. It is easier to search for a simple and often wrong alternative view, then believe "you know better".
So, it is expensive to run a software system. It is not always easy to change it, nor is it possible to see the future. Software and support companies have you where they want you, and you are stuck. Still worse, you don't have the power to change things. Fix that!