AGILE IN ACTION

Saturday, 3 June 2006

Iteration zero

Posted by Simon Baker

We recently completed iteration zero to setup our project ready for development. Here’s what we completed in the iteration:

  • Installation of RedHat Fedora Core on the all the servers.

  • Installation of Subversion, Maven2 and Cruisecontrol on continuous integration server. We created our own Maven2 repository to contain artifacts not available in the central repository at ibiblio. Cruisecontrol was configured with a continuous integration project that builds the whole application and runs all the tests on a check-in to Subversion. We used Maven2 profiles to provide targeted deployment to the DEV and UAT servers. The DEV profile was configured as a separate Cruisecontrol project scheduled to deploy a nightly build to the DEV server to enable our customer to play with functionality as it is developed in each iteration.

  • Installed and configured DEV and UAT servers and the developer workstations.

  • Conducted spikes for FIT, FIT Library, Selenium.

  • Customized Cruisecontrol to publish the FIT tests on the reports page on the project Web site.

  • Completed some introductory training on collaboration and agile teams, Extreme Programming and Scrum. More will follow on-the-job through coaching.

  • Completed a chartering session (more about this in a later post) where the team, including our customer, created a guiding vision statement for the project, defined futurespective success criteria, noted assumptions and constraints, identified the project community and agreed working practices.

  • Produced an initial product backlog with our customer. This product backlog comprises a goal roadmap identifying the high-level goals for the next 6 months (corresponding to 6 releases, 1 every 4 weeks). Each high-level goal was broken down into 4 sub-goals corresponding to potential iteration goals (we’re using 1-week iterations.

  • Completed a release planning game for the first release. We took the high-level goal for the first release and broke the 4 sub-goals into user stories, grouping the story cards according to the sub-goals. Our customer prioritized each grouping by business value. Using planning poker, the team provided coarse estimates in ideal pair days. Since the team had not worked together before we did not have an empirical velocity. To use only as a starting point, the team decided on a calculated velocity of half the number of pair days in the release (based on the assumption that one ideal pair day equaled one elapsed day). Using these estimates and the velocity, our customer and the team agreed on a set of user stories for the release that would deliver the release goal.

  • Set up our planning boards to show the goal roadmap, and the current release and iteration plans. (I’ll describe our planning boards in more detail in a later post).

  • Wrote enough code to help us set up the automated build, configure Cruisecontrol, and play around with FIT, FIT Library, and Selenium.

We still have to complete the following tasks so we’ll do them over the next few iterations:

  • Get the Selenium tests running as part of the automated build with their results published on the Maven2 reports page on the project Web site.

  • Add lava lamps to the continuous integration configuration.

  • Possibly set up a Maven2 proxy.

We haven’t got our bullpen yet but I’ve obtained permission to reorganize the workspace subject to cost. We’re in a rented office space and something as simple as constructing a bullpen costs silly money, so we’re waiting on the quote from the landlord. If we get the go-ahead we’ll need rectangular desks (the office is furbished with those curvy desks) to make the layout easier and more efficient, and to make pair programming more comfortable.