Google+ Followers

Wednesday, August 3, 2011

Do it in small pieces

In a Agile project when we plan the work for the project, we split it in small pieces, a.k.a. User Stories. Then in the begging of the project we prioritize the small pieces in order to do first the most important pieces ("how" to prioritize is a subject to another post).
But all of this doesn't matter if the team decide to work in all the story at once.

The whole idea of breaking down the work and prioritize it, is to be able to keep delivering some business value along the development time. And more than that is a way to follow up the project progress.

Suppose that we have a project that will have 1 week iterations. In the first day of the 1º iteration the project board was with this status:

Stories                          In Dev                         In Tests                 Done
1                                       X
2                                       X
3                                       X
4
5
6
7

In the second day the developer Fulanom who was developing the Storie 2, decided to start coding a little piece of Storie 5 because the code was very similar to the Storie 2 code, just changing some parameters...

So in the second day the Project Board was:


Stories                          In Dev                         In Tests                 Done
1                                       X
2                                       X
3                                       X
4
5                                       X
6
7

All the others DEVs had the same ideia, what bring us to the following scenario:
Stories                          In Dev                         In Tests                 Done
1                                       X
2                                       X
3                                       X
4                                       X
5                                       X
6                                       X
7                                       X

This is bad, because now we have a Atomic Commit to the iteration, where or we delivery all the stories or we don't delivery any Story!
The idea behind the creating story, prioritizing,  is to not follow the Waterfall pattern of Atomic Projects.
Although sometimes from a coding perspective makes sense to code a new story instead of testing the coded story, this is not a great deal. As in the end you still have to test both stories. And as a test infected I'm sure that the surprises will arise during the tests.