Few people realize the seemingly incredible amount of time and the degree of skill it takes to produce quality software. Unfortunately, in the business environment, the almighty dollar rules. This results in a number of forces counteracting the efforts of even the best programmer. Chief among them is the urgent need to get it completed and on the market as rapidly as possible. But the others that have been mentioned are as least as important:
- Feature creep
- Programmer turnover
- Poor design
- Poor specification
- Intentional obsolescence for marketing reasons
Even the law of unintentional consequences, usually spoken about in terms of governmental actions is a constant foe of the programmer. Couple that with the fact that more and more of the software development is being done overseas by people with little or no experience in the environment in which the end product will be used and possibly a language & communication difficulty and the end result is a lot of crap software.