Hmmm, how many iterations to do…?

Extreme Programming Explained : Embrace Change (2nd Edition)
I’m teaching our Software Design and Development course again this semester after what I think is the longest hiatus I’ve ever had from the class (1.5 years!). This break is giving me a nice (and somewhat frightening) chance to see some things afresh and ask some questions about how some things have been handled historically.

One thing I’ve been contemplating is the number of releases we want to run. We run a fairly agile/XP process; for more see the Agile Manifesto, this nice introduction from Don Wells, Martin Fowler’s history.

Agile Software Development, Principles, Patterns, and Practices
One of the key ideas here is to do frequent small releases that are broken up into even shorter iterations. Historically I’ve usually done 3 releases, each composed of 3 (or sometimes 2) one week iterations. Re-reading the Bob Martin’s excellent Agile software development and thinking about how that’s gone in the past, I’m wondering if it might make more sense to two 2 releases, each composed of 2 two week iterations. The problem is that a 1 week iteration doesn’t give you very much time for planning and tracking, especially since everyone is “part time”. Martin’s text, for example, suggests two week iterations (for full time employees!) with a planning/tracking meeting half-way. (With one week iterations we try to have something like that mid-week, which gives them feedback sooner, but we tend not to do it every week because it would just take up too much time, etc., etc. So maybe two week iterations are just more honest?)

I see two possible downsides to this. One is that a two week iteration is a long time, giving groups more time to delude themselves that everything’s OK and they’ll pull it all out in the end. The mid-point planning/tracking meeting/report will help mitigate that, but it won’t make it go away.

Numbered parts
The other is that we only get two releases which cuts down on several opportunities for pedagogical fun. One thing I’ve often done, for example, is have groups swap code bases after the first release and see how much fun it is to deal with someone else’s code in the second release. We then get the third release to pull everything back together and reduce the amount of chaos.

If I thought that was really important to do this kind of swapping I could make them swap in the middle of the first release, so everyone does a single two week iteration on Project A, and then switches to Project B for the second iteration. Then they’re also stuck with that group’s planning and estimates, which could be fun (or a complete mess!).

Anyone out (including the several of you that have actually been through this course) there have anything thoughts?

No tag for this post.

Related posts

Thanks, Pete

Thanks, Pete by D.James from Flickr
I wish I could take credit for this incredibly cool photo, but I can’t. The wonderful shot on the right is by D. James from Flickr. Equally excellent is the tale he tells with it; I’ll make you click through to check that out. I will say, however, that both the photo and the story strongly reminded me of Peter Whelan. Peter taught geology here at UMM for many a moon until his all-too-early death a few years ago, and he is missed as well.

Lithography by Imago from FlickrIn one of those happy coincidences, at around the same time I stumbled across this fine shot of stone and lichen by Imago (also on Flickr), on the left, and I think Peter Whelan would have liked it as well.

Then to round out the Peter theme, Peter Wyckoff (a biologist here at UMM) has asked if I’d be interested in helping out with some of the programming work he needs for a project looking at the effect of climate change on the prairie-forest border here in Minnesota. Oh, yeah, I’m interested. I love computer science, but I also love biology, so if I can mix them that’s definitely a happy day.

No tag for this post.

Related posts