Here is a quick discussion on Iterative vs Incremental development:
- Allows you to validate your architecture and solution early
- Allows users to see and test the whole application early
- Minimizes the affects of change to a feature
- Ensures important stories are built first
- Elicits improved feedback on the whole application early
- Allows you to deliver your application early
- Discourages "gold plating"
- It partners nicely with user story mapping (turn the diagram upside down and you have your story map)
- Your code and design has to be change tolerant
- You have to be proficient at slicing your user stories
- You won't know the final solution at the beginning of the project
The first story slice is simply a form with little or no validation with text boxes To, Subject and Body with Send and Cancel buttons. When the user fills in the text boxes and clicks Send an e-mail is sent provided the e-mail addresses entered are correct. But, this e-mail has no extra features like support for HTML formats, RTF, attachments, e-mail priorities, etc. Once this story is implemented, the team will implement similar slices of each feature for Read Email, Create Appointment, View Calendar, Create Task, Edit Task, Create Contact, Edit Contact, etc in order to create a minimalist working model of the whole application.
The next slices of this particular feature would be to implement stories such as implementing Carbon Copy (CC) and taking e-mail addresses from your contact list. You can also see that the form has changed slightly - the Cancel button has been removed and the Send button has been moved to the top.
As we continue to iterate through this feature by adding story slices, the form takes additional shape, adding tool bars and tool bar items. At this point, the application may be finished enough to release to production and start earning revenue for the organization while we continue to add new features and use that revenue to help fund the remainder of the project.
A further release with more story slices implemented:
The final release:
Iterative development is an important tool in your agile toolbox to help your teams deliver early and adapt to change while keeping the project's end goals in mind. User story slicing is one of the important techniques you can use to help make this happen.
Want to receive future blog posts in your inbox? Enter your email address here.