This article at MSNBC is so on the spot that it's even scary. It discusses how big software failures are rarely linked to the quality of the developers, but more and more to the quality (or lack of) of the management, communication and training. Here's some gems:
"Often, however, the first step toward total disaster is taken before the first line of code is drawn up. "
“In 90 percent of the cases, it’s because the implementer did a bad job, training was bad, the whole project was poorly done”
"Another common theme in failures lies in the ranks of employees who actually must use the systems. Often they’re not given proper training. There’s also a chance that they don’t want the project to succeed, especially if they see it as a threat to employment."
Another reason I must add is the unrealistic budget control performed by some companies while trying to implement *any* product. Quality comes at a price, and not everyone's ready to pay for it - and loads of integrators, especially after dotcom boom, will be more than glad to do your project for your low budget and implement all your wrong design ideas just for the sake of having people being billable again.
Me says, it will not change.