Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Delivering software early and often is achieved by iterative development. Projects iterate through the software development life cycle in short cycles, instead of completing all business analysis for the entire project before development can begin, and/or developing the entire application before the product can be deployed.
Iterations and Milestones
Agile projects are broken down into short iterations or “sprints.” I also find it helpful to identify major milestones as well.
- Iterations – Each iteration is typically a 1-4 week period. These “sprints” culminate in a customer review. I prefer 2-week iteration, although I have used a 1-week iteration at times on smaller projects. Work assigned to an iteration should be able to be release through to production, although sometimes there are features that take a few iterations before they are completely baked. If the release will be pushed out to production we turn off any half-baked functionality. Read more on Iteration Planning and Iteration Reviews.
- Milestone – Milestones usually consist of 3-5 iterations. The main consideration for the first milestone is to deliver an application with as much value as possible out of the gate. A milestone should include completed modules that add real value to production users. Some might say that if you are just working on a queue of continuous improvement issues for an existing product that milestones are not useful. In some cases this may be true, but if you have a product strategy and are following a road map, you should be able to define some useful milestones that indicate progress against your plan.
There are some nice advantages of iterative development and releases.
- Early and frequent ROI – Following the 80/20 rule, the first 20% of effort results in 80% of the value. By releasing early and often, the customer gets value much more quickly than if they had to wait for one big bang release.
- Maintaining alignment – Iterative development means frequent check points. When the customer reviews what has been done each iteration and provides feedback, the big issues are out on the table early, enabling any necessary course correction.
- Realizing progress –When deliverable only come once every 6-months, fatigue can set in, as well as a gnawing sense things are running behind. By contrast, when a team is nailing their deliverables each iteration, they develop the confidence that comes from being on a winning team.
- Excuse to celebrate – Seriously, who doesn't like a good excuse for a party? Each time a team hits a milestone, we have a little team celebration to mark the success. These events are pretty inexpensive, such as a movie in the conference room on a Friday, along with ice cream sundaes or a lunch. The team enjoys the acknowledgement of another successful delivery as well as the clear demarcation of the end of one milestone and the start of the next.
No comments:
Post a Comment