Iteration #1 – Day #10 Friday 12/20/2002

Today was the last official day of the iteration. We didn't get everything signed off by our customer representative (QA), but we did complete all the technical tasks generated from the story. Additionally we got a few bonus features as people noticed that an hour or two would pull things together. I'm not sure this is the best thing to do since it wasn't on our official list, but as most of the developers know what features are desired and it wasn't blatant gold plating we can let it slide. Our director and PM decided to slide the end of the iteration to 12/31/2002 to line up with another related project and because of the difficulty of having a 2 week iteration over the Christmas holidays.

Overall I'm happy with what we accomplished, a little disappointed that we weren't able to complete the story through customer testing. We did learn a lot about how our team is going to implement agile processes. In the spirit of Cockburn's Agile Software Development we will be having a "postpartum" (as it is called here) to see what worked and what didn't. Until that time (Jan 2, 03) here are my thoughts.

What Worked Well

  • * Planning Game - after initial hesitation the team gelled and dived in. The initial estimates were right on after some discussion about how estimates are generated. The amount of time spent estimating was a big win as well, since we spent the effort on only those things the customer wanted. We also postponed some work, because the customer wanted something else first. Exactly the kind of thing the planning game is supposed to do.
  • Daily Standup - this was not a new tactic to the team, although I don't think there was explicit guidance on the format previously. The meetings accomplished their intended goal of communicating status and general knowledge of what was happening which was essential since the bullpen was not used much.
  • Iterations - defining such a short iteration (2 weeks) was a big win since it showed the team (and management) that a significant feature could be built in a short amount of time. Previously iterations were many months long plus QA and bug slaying time.
  • Wiki - the decision to implement a Wiki was one of the best we made. Previously we tried to use VSS as our document management solution, but as anyone who has tried this knows - it doesn’t work. If information wants to be free, then VSS is a maximum security prison.

What Didn't Work So Well

  • Customer testing - we did a poor job of getting working, unit tested code to QA early and often. Part of this is the learning curve, part old habits and part learning how to deliver small pieced of working code.
  • Continuous integration - we didn't integrate until the 8th day (out of 10). Once again this is a learning curve, old habits die hard, new ideas take awhile to take hold. We are committed to automating the build process so this should be better next time.
  • Refactoring - there is (rightfully) some fear about refactoring since there are very few unit tests and the perception is that major rewrites are necessary. Hopefully if we can get some pairing done we can do some design improvement without rewriting.
  • Unit testing existing code - a number of developers touched existing code without writing any unit tests. We need to get test infected if refactoring is going to take off.
  • Pairing - we had almost no pairing this iteration. This will need to get better if our code and our developers want to get better.
  • End of Iteration slack - as we reached the end of the iteration several developers ran out of things to do. This was partly because of the poor job we did getting stuff for our customer to test, partly the upcoming vacations. We'll need to watch this in the future. We may want to have a number of spikes to work on, or training materials, or articles to be written, or technical stories like additional unit tests.