Channels ▼
RSS

Design

Iteration Negative One


Scott is Practice Leader Agile Development for IBM Rational.


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.

[Click image to view at full size]

Figure 1: High-level Agile IT lifecycle. Agile projects must fit into the overall IT lifecycle just like nonagile projects.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Comments:

Video