A major impediment to the development of quality software is the relentless need (whether real or imagined) to constantly upgrade the development tools and adopt new technologies. The programming tools and technologies are very complicated. It takes years of using them before the programmer fully understands the best practices and knows how to avoid the traps that novice users of such products fall into.
Because of the constant upgrade cycle in the software industry, by the time there is finally widespread competency with a particular technology, it becomes time to upgrade to the latest and greatest thing, forcing everyone to throw out their hard-earned knowledge of the old products and work with new stuff that they don’t understand. The inevitable result is bad software.
There’s an evil alliance between geeks who love new technologies for the sake of their geekiness and who don’t really care if the end result is buggy software, and the providers of commercial products, such as Microsoft, who make no money unless they can obsolete the old products and force everyone to pay money to “upgrade” to new products.
I wish that people would stand up to the geeks who are constantly trying to shove this new stuff down our throats. If only people would say “no, we are not upgrading to Visual Studio 2008, Visual Studio 2005 works fine enough.” But the programmers in the trenches know that such courage would be suicidal to their career prospects. No one wants to be the programmer in 2008 who is still programming exclusively in Visual Basic 6.0.