- How can software and other project elements be designed and delivered incrementally? What set of management and technical practices would enable this?
- How do you know whether your Agile project will complete on schedule?
During the October 2011 meeting I found myself reconsidering the value of defining "done" when writing User Stories. I always have thought that defining done is essential to tracking progress. But what done means is still a difficult question. Andy Singleton of Assembla suggested that
The only useful definition of done is that you approved it to release, in whatever formWhile the goal of agile methods is releasing software, I find that this definition, while appealing in its simplicity, misses some things:
- Agile methods have a goal of continuously shippable code. Of course, "shippable" might not mean "ready to release" and cane mean something closer to "runnable," but you can get there by doing no work since the end of the last release. That isn't the goal of agile.
- With that large scale definition of "done" you have no way of tracking progress within a sprint.
- Without an agreement on what you're going to, it's hard to know when you are changing direction. And acknowledging change is an important part of being agile.
- Improve communication among team members and between team members and business stakeholders.
- Evaluate my understanding of the problem and help me identify what I can improve.
- Set expectations so that it's easier to develop trust between stakeholders and the engineering team that the team can, and will, deliver.
See Andy's response, and read more in Part 2 of this conversation.