Subscribe via RSS Feed

Tag: "Iteration Zero"

Software Architects: Hit the Ground Running

A New Look at Iteration Zero

Roadmap1How many times have you been involved in a project where leadership wants more architecture documents produced … but there just isn’t enough information to produce the documents? How about when leadership wants you to start coding the moment the construction phase begins?

While problems like this plague development shops, it doesn’t have to be that way. I believe that there’s a perfect plan (based on the Agile method of Iteration Zero — the phase that occurs after project definition but before construction) to make sure that when construction begins, coding starts.

Getting Out the Door

Imagine we are going on a journey. Whether our journey is a software development project or a trip to a new place, preparing for a journey should follow a process. Journeys that adhere to a process right from the start are much more likely to be enjoyable, problem free and capable of delivering better results.

Let’s say that we want to travel from Toronto to New Jersey. However, there are several things that we do not know about this trip. In fact, we don’t even know all the things we don’t know about yet. And, if we think that we know, we are only fooling ourselves. So what do we do? We pull out our map, and begin to look for the most direct route.

First we need to answer some basic questions such as “How will we get there?”, “When will we leave?”, “When will we arrive?” and “Why are we going?” Mentally, we start a high-level planning session to answer these questions. We eventually determine that we will be traveling on foot because the other options are just too expensive for our limited budget. We also determine that when we travel, we should arrive at our destination in about 30 days. We know that we are going to New Jersey to reunite with some old school buddies. When our visit is complete, we need to trek back to Toronto. This means that the total trip will span 67 days.

Then we start to drill down into the next level of detail. We need to cross Lake Ontario because if we walk around we’ll add another five days. We know that we are very good at swimming and coincidentally were born with webbed feet. We also know that we can swim across Lake Ontario in 3 hours. We plan our route across the lake and make plans to eat at Sally’s Diner in Buffalo, New York. We plan to rest in Buffalo and spend the night.

We then continue this level of thinking and planning as we travel through several states, rivers and finally over the Appalachian Mountains to our destination. After considering the potential for foul weather and our actual ability to make this trip, we realize that the trip will not take 67 days, but actually 84 days. This means that we need to start walking, or swimming, no later than the last week of March to arrive the first week of May. But, it’s already the second week of April. So, now we revisit the plan to include running instead of walking. Such is life.

Now that we have all of these plans, the next step is to actually physically prepare for the trip. The objective of this preparation phase (which takes an entire week) is to ready ourselves for the long journey and allow us to walk out the front door with confidence. It includes shopping for eight pairs of good running shoes, two pairs of hiking boots, a wet suit, some clothes, toiletries, a new back-pack and many other things. Next, we start a more detailed mapping of our exact route. We start conditioning our bodies for our impending, physically taxing experience. Without performing each of these activities, we increase the probability that we will be late for our reunion … or worse, not even make it at all.

We now have everything we need. We are ready to walk out the front door.

So, now you may be asking … what does all of this have to do with Iteration Zero and software development? The whole process described above is all about managing risk and approaching the goal properly. We have identified where we want to go and how we’ll get there. In software development, this can be thought of as business definition and understanding the business objectives. In the second stage of preparation —  studying a detailed map and the purchase of travel gear — can be thought of as Iteration Zero. This is where the team’s virtual assembly line is prepared. Finally, the third stage of swimming and running is the construction phase.

Next week, we’ll determine if our planning process was enough to have a successful journey (or development project) without stifling ourselves with too much complexity.  Process is supposed to enable, not disable.

What does your team do before construction to make sure that when construction begins, coding does as well?

Photo Credit: Scott Meis Photography