Including a testing/QA component on a software project necessarily prolongs the schedule, right? Not so, according to Ross Collard. In this, the first of a three-part series, Collard explains how speed and quality assurance don't have to contradict each other. Read his examples of how testing can actually help reduce the time to market.
The Speed Imperative
Failing to deliver on time is probably the single largest problem facing the software profession (closely followed by and often associated with last-minute unpleasant surprises, reductions in the features delivered, less complete testing and lower quality, and cost overruns). So it is critical to be able to deliver systems and products to the market quickly. There is considerable evidence that the game goes to the quick, with few second chances for latecomers.
The Wall Street Journal made this observation about the winner-take-all society: "Today, it's axiomatic in Silicon Valley that the Internet is a 'land grab' where the dominant early player walks off with most of the booty." There's even a book by James Fallows, entitled Faster: The Acceleration of Just About Everything .
In the words of Ian Diery, former head of marketing for Apple Computer, "Being first is more important than being best." (This works well as a strategy…until the competitors catch up with the company's innovations, and the customers aren't so willing to compromise quality anymore.)
Put another way, the claim is that good quality delivered late is useless. As Napoleon Bonaparte said to a messenger in 1803, "Go, sir, gallop, and don't forget that the world was created in six days. You can ask me for anything you like, except time."
Does Fast Delivery Have to Compromise Quality?
There isn't an iron-clad tradeoff between time to market and quality: these two factors do not have to be mutually exclusive. There are many situations where improved practices have decreased time to market, and have increased the quality of the delivered system at the same time.
As one example, IBM reported that, in one of their divisions (the Santa Theresa Lab), over a two-year period the software testing efforts decreased by 43 percent on average, and elapsed time to deliver products to market decreased by more than 15 percent, when software professionals and their managers adopted more effective techniques for defect prevention, quality assurance, and testing.
The quality of the IBM division's systems improved at the same time, with the numbers of bugs remaining in the delivered systems dropping by approximately 50 percent.
Conversely, in many situations, longer delivery times have led to poorer quality. As the system delivery date becomes late and then more late, the temptations increase to "cut corners" on defect prevention measures, testing, and fixes.
As reported by Capers Jones, IBM found that the software products that have the fewest defects also have the shortest delivery cycles . In a study of 4,000 projects cited by Jones, poor quality was one of the most common causes of project overruns. The reason is the delay caused by reworking to remove defects.
In response to customer demands and competitive pressures, most organizations are continually attempting to reduce their product development cycles and system delivery times. Organizations including Hewlett-Packard and AT&T have reported that their system development and delivery cycles have steadily been reduced over the last decade, in part by making the test and QA processes more effective.
The (Apparent) Quality vs. Speed Contradiction
In a speed-focused environment, you are likely to hear the following arguments against testing:
Testing is the bottleneck in delivering systems. This statement is akin to saying that checking that each car runs is the bottleneck in the automobile manufacturing process. Testing requires tradeoffs of time, resources, and results, like any activity. But when the critical element is time, test teams can make decisions and take actions to avoid protracted testing. Even better, defect prevention practices such as walkthroughs and effective unit testing can deliver cleaner software and keep