It was a bright and sunny day, and suddenly an agile software development project began. The previous day, someone had an idea for a new system and decided that an agile team should be formed to build that system. So she mentioned the idea to both her business and IT colleagues and they all agreed that it was a good idea to do this. Luckily, sufficient funding was available and a qualified agile development team was waiting to be put to work. More importantly, no one else had plans for either the funds or the project team. With full stakeholder support, funding, and the right people for the job, the project was off to a great start.
If only it were that easy. Getting a project started is often a long and difficult process involving significant political maneuvering over many months, if not years. Organizations have limited resources and many opportunities in which to invest those resources. As a result, you must choose wisely when it comes to starting up a potential IT project if you want to truly maximize stakeholder return on investment (ROI). This is true of any IT project, including agile ones.
A common concept within the agile community is that of "Iteration 0," called "Sprint 0" by Scrum teams, which I described in "Initiating an Agile Project" (www.ddj.com/architect/188700850). It is during this iteration that you do the fundamental work of getting your project team organized. You'll do some initial requirements envisioning to better understand the scope, and more importantly drive your myriad of stakeholders to a reasonable concurrence as to that scope. You'll also do some initial architectural envisioning to identify a potential technical strategy. In parallel, you will be bringing people into the team, setting up workstations, doing initial planning, and whatever else it takes to initiate the project. These activities are all important, but they presume that someone has made the decision to go ahead with the project to begin with. So this "first" iteration, which we originally tacked on to most agile methods once our exuberance wore off and we realized that there was a bit more to software development than construction, isn't really the first iteration after all because work occurs before Iteration 0 can begin. To keep the number scheme consistent let's call this "Iteration -1" ("Sprint -1" for the Scrummers among us).
Iteration -1 is something that Mike Vizdos, of Implementing Scrum (www.implementingscrum.com) fame, and I called the "preInception phase" in the Enterprise Unified Process (EUP) (www.enterpriseunifiedprocess.com). The EUP expands upon the system development lifecycle (SDLC) to address the full IT lifecycle. Figure 1 shows the full lifecycle for agile within IT organizations, depicting the difference in methodology scope. SDLCs focus on developing a release of a system, whereas a system lifecycle addresses the full life of a system, from the initial concept all the way until it is finally retired and pulled completely from production. The IT lifecycle encompasses the activities required for all of the systems that support your organization, adding cross-system issues such as portfolio management, enterprise architecture, and reuse into the mix.