A Quality Commitment
While few people talk about quality, and while software projects rarely have quality goals, most people would agree, "Of course, we must produce a quality product." Quality work is not an accident. People must believe that quality is important, and they must strive to produce quality products. Quality is like any other part of your business: if you don't measure it, you can't manage it, and if you don't manage it; it will not improve. Software quality can be measured, but until engineers measure and manage the quality of their work, the quality of their work will not improve.
No other modern technology rushes products through design and implementation and fixes them in test. Semiconductor engineers know that quality is critical. They cannot test and fix chips at the end of the line. When Toyota embraced the quality teachings of Dr. W. E. Deming, they demonstrated to Detroit that by managing quality, they could produce better cars and save money2. Finding and fixing problems in test is expensive for semiconductors, for automobiles, and for software.
Why don't software engineers focus on quality? It's not because they are lazy or unmotivated, but because of the way they have been trained and managed. Starting with their first programming courses, engineers learn that the most admired programmers produce code at lightning speed. Then they find and fix the defects in test. This fix-it-later attitude fosters poor practices throughout the software process. There are no quality standards, design standards, or even much in the way of implementation standards. To get quality work, you must change this culture.
If all engineers are poorly trained and if they all do undisciplined work, what can you do? Since you can't afford unpredictable schedules and poor-quality products, you must make changes in the way software is developed. The key questions are the following:
Is there a better way to manage software?
Is this better way economical?
Is there a practical way to change organizations so they will consistently follow sound and high-quality engineering methods?
The answers are yes, yes, and yes. In the rest of this book I discuss ways to introduce effective software quality and management practices. The methods I describethe Personal Software Process (PSP) and the Team Software Process (TSP)3are also attractive financially. As shown in Chapter 8 and Appendix F, an investment in these methods will yield a return of over 300%. Finally, a defined and available introduction program is available to help you and your people adopt these methods.