What does Done mean? That's a pretty simple question in the world of developing software. Or is it?
I've heard many different definitions for Done over the last few months at TG. I've even started a wiki page to start coming up with a definition.
For most coders, Done means that they're finished writing code. It usually doesn't mean tested, signed off, deployed, tested in an alternate environment, integrated with the build, documented, etc.
That's why I liked reading this quote today from all about agile. It sums it up quite nicely:
So, in agile development, make sure that each feature is fully developed, tested, styled, and accepted by the product owner before counting it as "DONE!". And if there's any doubt about what activities should or shouldn't be completed within the Sprint for each feature, "DONE!" should mean shippable.
The feature may rely on other features being completed before the product could really be shipped. But the feature on its own merit should be shippable. So if you're ever unsure if a feature is 'done enough', ask one simple question: "Is this feature ready to be shipped?".