| Home | Use Cases | Work Flows | FAQ | Get Involved | Bugzilla | Build | Documentation | Developers

# The Sixteen Stages of Done

    From: ?
    From: jmetzler@... (John Metzler)
    Subject: By request, THE SIXTEEN STAGES OF DONE
    Date: 9 Sep 1998 10:37:43 -0700
    To: ...

In software development, 'done' is a most elusive word. Its definition varies according to the listener. There is of course, no single stage as done. For example in in food preparation, there is no 'yellow' but there is 'yellow-3'. However, more basically, we use 'done ' to mean that we are ready to start somthing else. Unfortunatly, that somthing else is often another project rather than the next stage of the current project. When we do this, the overall state of the project project is not 'done', its state is 'suspended'.

The following stages of done can be used by default in any project that has not defined specific milestones. You might also use this list to structure the notion that a delivering a software product is more than performing stage 6 and posting a tarball on a website.

1. The concept is known.
   We know this can be done, now all we have to do is build it. Math professors' done. Q.E.D.
2. Definition Complete
   We have a definition of what to build, enough to promote the project for funding. Once in progress, its a done deal.
3. Design Complete
   We know what the sub systems are, how they interact and how to partition the technology. We know what technologies will be used.
4. Design Review Complete.
   The arguing is done.
5. Internal Interfaces Design Complete
   Sometimes we dont do this and when we dont, it seems that the product is never done.
6. Code Entry Done
   We have typed in everything we can think of, compiled it, got a clean link. This is the most dangerous 'done', sometimes it gets shipped at this stage.
7. Vertical Slice Tested
   A most important feature has been seen to work once, a feature which requires participation from most modules. This stage of done is the very first stage of 'yes, it works'.
8. All units tested.
   All the principal interfaces of all units have been seen to work. Possibly driven in isolated and artificial ways. Each programmer thinks he is 'done'.
9. Code Complete
   After considerable systems integration and rework. Its starting to feel done.
10. System test complete
    Somebody other than programmers are willing to call it done.
11. Packaged in shipping release, fully and properly archived, ... documents
    All those other things you have to do are done.
12. Shipped to customer
    Done enough to send them a bill.
13. Accepted by customer
    Done enough for the customer to pay the bill.
14. Deployed by customer.
    Somebody at the customers site thinks it is done, nope not yet.
15. Demonstrated to satisfy customers requirements in production.
    Yes, this is what we want.
16. Obsolete and Discontinued
    Done for. Not to be confused with done number four. Until we are here, there is support to be done.