Various configuration management tools are prevalent which can help automate and organize the versions and releases of a software product. In fact, one of the easiest ways to mess up a product is to lose track of its exact contents. The use of make, SCCS, PCS, or VSS in a disciplined way and at the appropriate point in the development cycle helps to insure that the proper files are contained in the product. There is a lot of bad code out there and lots of projects in trouble. Everyone knows the connection between poor technique and poor results.
Bad code is usually behind schedule, laden with bugs, and difficult or impossible to maintain.
Organizations that produce bad code typically have a morale problem due to the endless unpalatable maintenance assignments and the turnover is perpetual. Yet we have been warned that bad code protects job security and have been told by the occasional client that our excellent code means that they can get rid of us because anyone can read and maintain our code.