Iteration #0 Fiday 12/6/2002
With everyone in place with scheduled the first ever XP style planning game. I should mention that I decided to use XP as a concrete place to start since much has been written about XP and the team could read up off line
Many of the team members were a little skeptical about how well this informal approach would work, but all were willing to try because they knew the practices they were using had reached their limits.
We started with user scenarios from our customer representative and had the user rep prioritize them. From there we broke out user stories that represented the functionality changes we would be building. We had a little bit of a challenge here as people wrapped their minds around the differences between the scenarios, user stories, use cases, tasks and requirements. We eventually called the user stories “implementation stories” to call out the fact we were only interested in stories we were going to build, rather than the ones that already existed.
Next our customer rep prioritized the new list of implementation stories and we estimated the number of ideal weeks to complete each story. One fact that came out of this is that we were estimating the number of ideal weeks for a <b>single</b> developer resource rather than the entire team.
Interestingly almost every story (out of 11 stories) was estimated at 1 ideal week. Here I had some objections to the limitation of every story being either 1, 2, or 3 ideal weeks as one of the leads wanted to estimate some of the stories in days. I held my ground, and well I did as we moved forward.
Our next step was to choose an iteration length and then fill the iteration with stories. We decided on an iteration length of 2 weeks since everyone was learning and a month long iteration would get us into the scheduling difficulty of Christmas. We had 3 “full time” developers and 2 calendar week with an initial velocity of 4 (1 ideal week = 4 calendar weeks). Pulling out our calculators gave us (developers * calendar weeks) / velocity = (3 * 2) / 4 = 1.5 ideal weeks of work per iteration. We did a lot of other “math” as well, but that is better left unsaid.
We still thought we knew better than our estimates so we took the top three stories and began brainstorming tasks. After we had collected all the tasks and re-estimated in ideal days we noticed that our #1 story was 10 ideal days long (i.e. 2 ideal weeks) even though we originally thought it would only take 1 ideal week. We decided to fudge our velocity a little to 3, but stick with only the first story and accepted the challenge.
Although it looks like a lot of work (well it was), but we did everything in a single 2 hour meeting. Much faster than previous project estimations, mostly because we delayed having to estimate stories we aren’t going to get to for several months. Of course the value of estimating those far off stories is questionable at best since we are going to learn so much about the system between now and then that any estimate at this point would be a wild stab in the dark.
One question still outstanding is how to estimate the amount of QA resources required in an agile/XP project. In our case we only have one QA person available, but what if we had 5 or 6 developers? Would 1 QA person be enough? QA in our case is doing the job of customer testing, normally one would only have 1 customer right? Maybe, maybe not. I guess I have some more research to do.