The Illusive Goal of Perfect Software
The business of creating and selling software is like any other business. The goal is to create and sell a product that is as free from flaws as possible. But most savvy users will at least grudgingly acknowledge that perfection is not possible, especially in version one releases. A good product is therefore judged not just on its absence of flaws, but also in the company’s responsiveness in fixing the flaws that get noticed by the end users. Delivering superior customer satisfaction in the software business is then really a combination of delivering a software product that is first as perfect as possible, and then, issuing regular updates and patches that address the inevitable flaws that slipped through the cracks. Towards this end, it is important for commercial software vendors to have a bug tracking tool that has a public interface, which allows the end user public to report a bug when they detect it, via email or through a Web interface.
Defect tracking, a method of collecting and managing reports on flaws, accomplishes several important things in the development lifecycle. First, defect tracking gives developers a simple tool for keeping track of what needs to be fixed, and why. Software development can be exceptionally complex, and even the best code writer cannot write perfect code every time. Keeping track of dozens, or perhaps even hundreds, of fixes over time is nearly impossible without a formalized tool for doing so. Of course, in a very small development project, defect tracking may be done on an ad hoc basis with a simple spreadsheet, or even a handful of note cards—but in almost any commercial endeavor, this approach will quickly overwhelm the development team and a formal defect tracking tool will quickly become necessary.
Defects and flaws are detected through two different avenues. The internal development team itself, in reviewing its own code and perhaps using code checking tools, will be able to detect flaws before the software is released. The defect tracking tool is valuable in this respect as a tool for development, and to ensure the highest quality product before the release date. However, as any programming team that has released a large software product can attest, flaws are still often detected after the product has been released. Almost any commercial software product will have continuous updates and patches to fix these flaws as they are found. The defect tracking tool therefore remains quite useful even after the release date, as a way to track the bugs and flaws that are reported by customers and end users.
The defect tracking system also plays a highly prominent role in the beta cycles of commercial software products. Most software companies issue “beta” releases before offering the final product for public consumption; “beta users” tend to be early adopters that want to get a first look at a product before commercial adoption. These early adopters are often large users with a major stake in the product’s development; beta participation gives these users an opportunity to provide valuable feedback and offer insight into what they, as consumers, ultimately need from the development team. During the beta cycle, there will inevitably be numerous defects that are detected by these early users, and the defect tracking system provides them with a venue for reporting those defects, and provides the development team with a valuable tool for keeping track of them. In the end, the result is a more satisfied customer.