Mar Levison has some experiences and links to tools here.
Year: 2007
Constant change
When we started doing Scrum many of us was quite inexperienced and we didn’t really know how shorter or longer iterations would affect us. As Mike Cohn acknowledges in this article an important driver when choosing iteration lengths is how you wish to handle change. Basically start out short, and try longer if that works for you, which basically sums up my experience too.
In agile we’re always talking about embracing change, but depending on your organization and experience there will probably be a lower threshold for how often you can accept change. We have only tried running with three weeks iterations, but we did struggle a bit early on.
We did the rookie mistake of accepting changes all the time. We still try to be flexible when the customer needs to make changes in the iteration, but we become quite restrictive when we are approaching the end of an iteration. About half way through the iteration we start to reject anything that isn’t minor changes.
With longer iterations we would be able to accept changes as the customer works on the stories with us and we both gain better understanding of the task at hand. With shorter iterations we would do smaller increments that would be easier to correct, and the correction wouldn’t be more than max two weeks away. If I was going to experiment with a different iteration length I would do the shorter one. Projects that have a unknown domain which contoniously changes would be better off with shorter iterations.
Extraordinarily typesafe
I like my type safety. It gives me a nice feeling of comfort knowing that the compiler will tell me what to put in, and beat me up if I do something stupid. Maybe that’s why I don’t really feel comfortable in Rubyland, maybe I will some day.
Anyway, Kevin Bourillion has a good post about beeing extraordinarily typesafe and Guice. I really like Spring for what they’ve done and use it all the time, but XML is a problem. Maybe it’s time to check out their Java config interface.