Is having Iterations Enough to be Agile?
This drives me nuts. At work, we have these things called iterations. In each iteration we develop a new bit of the application based on use cases that we created and finalized in the previous iteration. This is enough for people to think that this constitutes an Agile, iterative based approach to development.
I disagree.
The reason is twofold: 1) the use cases are suppose to be completely finished and signed off in the previous iteration and 2) each piece that we finish in a single iteration is expected to be feature complete and not be revisited. The implication is that features are added incrementally, but the application as a whole is not developed iteratively.
The biggest thing missing is user feedback. We have a testing team that gets each iteration’s release, but the user only gets the final product. We start off by gathering requirements and finalizing those requirements before we move to development. Once construction is finished, we move to testing and then user acceptance. To me, this is waterfall and not iterative development.
So far, I can’t convince anyone of this because we have iterations. Therefore, the mere presence of iterations means we must be doing iterative development.
Iterative, Agile development, to me at least, means more then just having iterations. I am just not sure what else it must include, but I have a feeling that it must include an Agile attitude. I’m not sure. What do other people think?
The words “iterative waterfall” come to mind.
Google search result number 2:
http://www.danube.com/blog/kanemar/the_staggered_iterative_waterfall_anti_pattern_part_1.html
A case of staggered-iterative-waterfall anti-pattern.
Interesting, and thanks for the link. I like the term and would have to agree that it is definitely an anti-pattern.
I think part of the problem inherent in this anti-pattern is a sense of fear and a real sense that they have to get it right the first time. The fear would be the fear of getting it wrong or making mistakes (again and again and again). The company wants to be Agile, but they also do not allow their development team to make mistakes or to get it wrong.
This means that the team must get everything right before they do anything. They create iterations in order to manage some of those requirements, but they are still implementing waterfall to ensure they don’t get it wrong because this project has to succeed.
This means doing things right which means Agile (in today’s age), but it also means understanding what you are doing up front. This means singing off on requirements and doing design up front. This means waterfall.