Nearly every project I’ve ever worked on (even in my electrical engineering days) has had lengthy requirement documents. Whether I did it, the team did it, or the customer did it, the requirements documentation was generally the bible of what the project was going to do. Changes to the bible caused change orders and resulted in large sums of money being thrown away. In one rather large project I spent a full year on the requirements and documentation before I did any massive coding.
Agile is definitely different. Our 5 person scrum team is working on 3 week iterations and we just finished iteration 0 meaning that all we did was figure out what to do in the next couple of iterations. So we’ve defined what our epochs, stories and some of the tasks so far. We’ve been using an agile tool from Rally Software that makes the process easier to manage. Each iteration is planned out so everyone isn’t burned out at the end which is kind of nice (though I know we’ll have a few long days here and there). At the end of the iteration we have show and tell with the product so the client can give feedback and review how well the iteration went.
The new iteration starts out with a planning session to identify all the stories and tasks your going to work on. Then you start working on it. So what this means for us developers is that we might be writing throw-away code and I’ve never done that before. I’ve always planned on the code being their for all time. This will take some getting used to. It means that we only ‘know’ about the stuff that’s coming up in the next iteration or two which means that assumptions we make right now might not necessarily be the case in 6 weeks.
Of course, the whole point of the exercise is to get something to the client quickly so they can a) save money and b) have exactly what they want. The traditional water fall method takes a long time and often times the results are not what the client wanted at all. Living in Kansas City where Sprint is a major employer, it’s hard not to know someone who hasn’t been on a water fall project that took 2 years and was cancelled at the last minute because it didn’t meet the project of objectives (but still met all the requirements!).
That’s all for now. Anyone else done an agile project before? What was the hardest thing for you to get used to? The benefits? Drawbacks?