Tuesday, May 20, 2008

"Done" Is So Fuzzy

Hooray! We're done!*


* Done is such a fuzzy word. What exactly is "done"?

As far as I can tell, all of these are definitions for the word done:
  • Feature Complete. All features have been implemented. No testing or bugfixing is included in this one.
  • Feature Complete With Tests. All features have been implemented, and automated tests are written and checked in. (The tests may or may not pass!)
  • Feature Complete With Passing Tests. All features have been implemented and automated tests both exist and are running successfully. No system-level testing (aka QA) has been attempted.
  • Demo-able. All features have been implemented, automated tests are passing, and system-level tests are complete. There are bugs, but they can be worked around. The product can be used in demonstration successfully.
  • Release-able. All features have been implemented, automated tests are passing, and system-level tests are complete. Major and many minor bugs have been fixed; the few remaining bugs are low-priority. The product can be shipped to a customer with a high probability of success.
  • Perfect. All features have been implemented, automated tests are passing, system-level tests are complete, and all known bugs have been fixed. In practice, this one doesn't happen.
Now, it's not a big deal to have different definitions of done. The big deal is to make sure that everyone agrees on that definition.

No comments:

Post a Comment