What an Agile Process Looks Like

Development teams that want to adopt agile methods need to know what a typical roadmap looks like. This book chapter from the new Becoming Agile shows you how to view Agile concepts from a phase perspective.

Figure 4 Development starts by establishing a foundation in iteration 0. Development iterations follow, delivering working code in subsets every 2 to 4 weeks. The working code is surfaced for a demonstration and customer feedback. When all iterations are completed the code is delivered to a production environment.

The development done during an iteration is not waterfall. The
process will be one of collaborative development. The developer will create
code to the minimum specification and demonstrate it to the customer. At this
time the customer will identify requirements they missed, or issues with their
initial requirements. The developer may also identify technical issues. The
developer, customer, and team will work through these issues during the
iteration, evolving the code until it supports what is needed at the end if the
iteration, not necessarily what was requested at the beginning. Figure 4
illustrates the steps in Development.

Building and testing occurs during an iteration. When an iteration is complete there is a review meeting to adapt (see Adapt in the following section).

Iterations are stored in acceptance environments until all
iterations are deemed complete. At that time all of the work is deployed into
the Production environment.

Adapting—reacting to new information

PHASE OBJECTIVE: Review the output of an iteration and re-plan based on discoveries (see figure 5).

“Adapting” is one of the special elements of Agile development. We expect change and we embrace it.

Figure 5 The adapt phase surfaces working code for
demonstrations and feedback. We use this period of time to validate we are on
target with the customer’s needs. We also use this timeframe to evaluate team
performance and velocity.

Adapting occurs informally throughout an Agile project, but it happens formally during the development phase. A review is performed at the end of each iteration to:

Demonstrate the state of the features assigned to the iteration.

Get feedback from the customers and stakeholders.

Refine feature definitions based on feedback and better
understanding

Incorporate new information that has been discovered
during the iteration.

Evaluate the pace of feature development and adjust the
next iteration accordingly.

Identify defects to repair.

When the review is complete the project manager modifies the
iteration plan based on the new information and the team proceeds into the next
iteration.

Deployment—delivery, training, and
revisiting and closing the project

PHASE OBJECTIVE: Code delivered to Production environment,
with all support needs in place.

The deployment phase typically begins after the last iteration
is complete. We bundle all of the previously completed iterations and move the
code to the production environment.

One of the advantages of iterative development is you can deploy
at the end of each iteration if you so choose. Teams that do this usually have
very little overhead in deploying, meaning the process can be done quickly with
few resources.

Typical tasks for the deployment phase are (figure 6):

Figure 6 When all iterations are complete we kick into
delivery mode. We train employees, customers, and support networks before
putting the code into a production environment.

Training support and operations on the forthcoming
release

Turning on your communication plan to employees and
customers

Finalize documentation

When applicable, enabling the marketing plan

Ensure all pieces of the maintenance and support plans
are in place

Release the code into Production

Where applicable, perform post-release QA in the
Production environment

Perform a lessons learned session with the team within
2 weeks of the release

In an Agile methodology you have considered deployment needs
throughout the previous phases. Optimally the work done during deployment is
tweaking and finalizing the training, maintenance, marketing, and communication
plans.

Summary

Agile software development does not occur sequentially, but
viewing it from a sequential perspective makes it easier to grasp the concepts.
We will use a case study that follows a sequential process to accelerate your
learning of Agile concepts.

Adopting an Agile process is a significant effort with a level
of risk. To help mitigate this risk we will present an iterative approach that
allows your team to add agility over time. You will add more agility to your
process as knowledge increases and the organization culture becomes more
accepting of Agile techniques.

Acme Media will bring the 5 Agile phases to life by:

Using feasibility studies to validate the value of an
idea.

Using collaborative planning to synchronize the team on
project vision and to break the idea down into discrete features.

Using development iterations to refine our
understanding of requirements and deliver working code.

Demonstrating functioning code to the customer and
adapt to their feedback.

Completing the project by deploying our code into the
production environment.

Stopping to review our process and make adjustments to
it, based on lessons we learned.

Beyond the case study, I believe the template outlined in this
article can also be used as a starting point for the Agile migration within
your own company.

An Agile process is 50% of the work in migrating to Agile. The
other 50% is establishing an Agile culture and environment.

This article is based on the book Becoming Agile by Gregory S. Smith, published by Manning Publications.