|
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.
- 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.
- Definition Complete
We have a definition of what to build, enough to promote the project
for funding. Once in progress, its a done deal.
- 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.
- Design Review Complete.
The arguing is done.
- Internal Interfaces Design Complete
Sometimes we dont do this and when we dont, it seems that the product
is never done.
- 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.
- 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'.
- 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'.
- Code Complete
After considerable systems integration and rework. Its starting to
feel done.
- System test complete
Somebody other than programmers are willing to call it done.
- Packaged in shipping release, fully and properly archived,
... documents
All those other things you have to do are done.
- Shipped to customer
Done enough to send them a bill.
- Accepted by customer
Done enough for the customer to pay the bill.
- Deployed by customer.
Somebody at the customers site thinks it is done, nope not yet.
- Demonstrated to satisfy customers requirements in production.
Yes, this is what we want.
- Obsolete and Discontinued
Done for. Not to be confused with done number four. Until we are
here, there is support to be done.
|