
Quality depends on the consequences of failure
I believe that the proliferation of garbage software can be traced back to one thing: Lack of consequences.
There has been a lot of talk about enlightening management to the significant long-term savings to be had by employing up-front design and analysis steps in a project--but in many cases management doesn't seem to want to listen, especially in the smaller organisations that are more interested in the near-term revenue. End-users blithely sign away their rights by agreeing to a deviously written EULA that absolves the vendor of liability but still maintains their right of ownership in the software product, so there are few immediate consequences when the software product fails.
What to do about it? I don't really know. I've often thought that it would be a Good Idea to sue software vendors that sell buggy products which end up tossing hours (or days, or weeks, or months) of work on the floor when they crash, or fire programmers that knowingly write garbage. Managers that allow or encourage bad practices shouldn't be in management positions. But, seeing as how we don't live in an ideal world, I don't see any of these things happening any time soon.
Until there are consequences for creating crap software there will be crap software. If you want to work in an environment where quality is a top priority, process and procedure are not only encouraged, but required, and where the end product has earned a confidence level that warrants entrusting billions of dollars or hundreds of lives to it, then go get a job in aerospace or medical equipment manufacturing. For the rest of the software industry, the consequences for failure aren't anywhere near as severe, so the concern for quality and reliability just isn't there.