Autodesk is full of product teams wanting to make their products perfect, but for several reasons, a zero defect product is not realistic. For example one person’s defect could be another's feature, a feature could be used other than designed, or a rare set of hardware or software conditions slips through the cracks.
Computer programs are combinations of algorithms plus data. In Microsoft Excel, an algorithm is expressed as a formula in a cell. Quick — what's wrong with this spreadsheet?
The value for the sum is not correct. The problem is the formula in the cell should be "=SUM(B1:B4)" instead of "=SUM(B1:B3)" — Doh! This is difficult to notice right off the bat because when you view the spreadsheet in Excel, you only see the data and not the formulas. You only see half of the program. You see the actual formula only when you navigate to the cell. It's then a simple fix of updating the formula to include all of the rows.
For computer programs. algorithms are expressed as code statements. Quick - what's wrong with this code?
The problem is that the code does not account for the case when x equals zero. This code would report 0 as negative. This is difficult to notice right off the bat because when you view the code in an editor, you only see the algorithm and not the data. You only see half of the program. Remedying this is what code debuggers are for. They allow a programmer to step through his code and look at the data values. This is where the "a ha!" moments occur. Once the unhandled value is noticed as in "Oh yeah, x can be zero." it's easy to correct the code.
The two examples I have provided are trivial. Most spreadsheets have thousands of cells. Code that makes up an application has millions of lines of code and thousands of data variables. So although applications undergo rigorous in-house testing, it sometimes difficult to envision every possible combination of values that can be encountered by pieces of code. That's why data from customers is so valuable. It reveals combinations that were not-yet-tested in the millions of possibilities. Thanks to all of our customers who help evaluate Labs technology previews and participate in our Beta programs. Customer supplied data and a debugger are a valuable combination in bug extermination.
The pursuit of perfection is alive in the lab.