I recently started a new project, developing a fairly simple data-driven web application. The project itself consisted of a handful of Use Cases, a couple web forms and a domain model containing less than a dozen domain concepts.
While it was my first time working with version 2.0 of ASP.NET, I was also trying out two new metrics, which a friend suggested: A Burndown Chart and a Velocity Chart. I’d also chosen 1-week iterations to give me the best feedback on my progress, as my initial estimate put the project at 6-8 weeks.
For my first iteration, I selected a small, core piece of functionality to implement. I knew in the back of my mind that I’d be writing some architectural-centric code for my different tiers, as well as setting up my web project and database permissions.
TMI? Keep reading – I do have a point coming up.
So how did I perform? Well, I was able to set up my web project; my database users and roles were created; and I had a good portion of my UI and business tier implemented. But, according to my metrics, I had done absolutely nothing. Why is that? First, I was only measuring the points of my chosen Use Cases. Second, I can only account for points if I have 100% completed the feature, period. No if’s, and’s or but’s.
So, how do I account for all of the work I’ve done so that my business users and management don’t think I’ve done nothing the whole iteration? I asked my friend, who suggested I implement a zeroeth iteration. That’s right – Iteration 0.
Once I stopped laughing, realizing that he was totally serious, I considered it and figured that it made a lot of sense. The first iteration of a project is partly a “Setup” iteration. While I’m not implementing anything of value for the business, I am working on tasks necessary to complete future iterations.
So, if you’re starting out a project and trying an iterative approach, keep in mind the mighty Iteration Zero. It could save your life, or at least some explanation time to your boss and/or business users.