Tip:
Highlight text to annotate it
X
Before we get into Agile Methodologies, let’s briefly look at the big picture: Project Management.
Project management is defined as the application of knowledge, skills, tools, and techniques
to project activities to meet project requirements. Just how important is project management and
its principles- According to the 2009 Standish CHAOS Report Summary, 24% of all projects
fail or are cancelled prior to completion or delivery, and 44% of projects are challenged
by being either late, over budget, or fail to hold required features and functions. That
leaves us with a meek 32% success rate of projects that are delivered on time, on budget,
and with the required features and functions. Three of the top reasons for project failure
are: lack of change-management, lack of communication, and poorly defined requirements, all of which
sum up to poor project management.
These statistics can be scary for companies and project managers, especially ones leading
a project for the first time, or launching a project large in scale. However, understanding
project management principles will lead the way to success. This brings us to an important
and innovative principle of project management: Agile Methodologies. First, let’s go over
some basics. Agile Methodologies is a change-tolerant approach to project management that determines
requirements for information technology projects in a highly flexible, and interactive manner.
Agile is typically used in software development, and helps teams respond to the unpredictability
of building software. After all, agile teams thrive on change.
Agile methodologies include an interactive work flow and incremental delivery of software
in short iterations. Each iteration of an agile methodology is a self-contained mini-project,
with activities that span requirements analysis, design, implementation, testing, and customer
acceptance. Several popular agile methodologies include: extreme programming, scrum, feature
driven development, lean software development, AUP (or agile unified process), crystal, and
DSDM (which is short for the dynamic systems development method).
Agile methodologies are a relatively new concept. However, their roots run deep into history.
Looking back, “agile ideas” have been around since before the 1970’s. Beginning
in the mid-1990s, a number of consultants independently created and evolved what later
came to be known as agile software development methodologies. Agile methodologies and practices
emerged as an attempt to more formally and explicitly embrace higher rates of change
in software requirements and customer expectations. In February 2001, the 17 independent consultants
that created agile, met in Utah to discuss, compare, and contrast their respective methodologies.
It was here that they classified their methodologies as agile. The coining of this term emphasized
the professed ability for rapid and flexible response to the changing of the methodologies.
The consultants also formed the Agile Alliance and wrote “The Manifesto for Agile Software
Development” and the “Principles Behind the Agile Manifesto” (Larman, 2004)
The Agile Methodologies include many development methods that are used to create various types
of software. Agile itself is increasingly one of the most popular development methods.
And in many organizations is gaining the favor of development teams over the waterfall development
method. The best way to describe how agile works is to do so in comparison to the waterfall
method.
At a high level, the waterfall method requires a development team to scope a project and
set milestones that are used to mark major steps in the progression toward a final finished
product. The downfall of this is that all of the planning work is done upfront and it
is very difficult to course-correct a project. One would literally need to restart a project
from the beginning in order to make significant changes. Thus, the waterfall development method,
if managed incorrectly, can lead to failure. There are many organizations that perfected
the use of this method and still use it today. Generally speaking, there isn’t much wrong
with it and fantastic results can be achieved. However, the waterfall method forces development
teams to assume that the project requirements will not change throughout the process.
In contrast to waterfall, agile methodologies allow development teams to embrace change
and manage it in stride. Teams still have an ultimate goal. But, instead of using milestones,
they manage very small releases called ‘sprints’. These sprints can range anywhere from less
than one week to up to one month. After which time, a new version of the software is released.
Issues and features are tracked with ‘user stories’ that describe requirements from
an end-user perspective. This helps to validate and ensure that the work being completed is
in-line with the overarching goals. There are frequent meetings for the team to discuss
their work, called ‘scrums’, and tasks are often prioritized during these scrum sessions.
Scrum is a common agile project management methodology that is used along with agile
development. In summary, the agile methodology allows for a more flexible approach to development
that gradually builds toward an end goal, or allows for indefinite improvement, whichever
is more suitable for the project.
The ‘Agile Manifesto’ was drafted in 2001 by the founders of the various agile methodologies.
This manifesto states the goals of the agile methodology. Among them are the following
key points: - Our highest priority is to satisfy the customer
through early and continuous delivery of valuable software.
- We welcome changing requirements, even late in development. Agile processes harness change
for the customer’s competitive advantage. - It is necessary to deliver working software
frequently, from a couple of weeks to a couple of months, with a preference to the shorter
timescale. - Agile processes promote sustainable development.
The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Now that we understand what agile is and how it works, who can actually use it- Forrester
Research in 2005 found that “Agile software development processes are in use at 14% of
North American and European enterprises, and another 19% of enterprises are either interested
in adopting agile or are already planning to do so.” It was also found by Forrester
Research that, of 21 companies surveyed, 66% said they were considering agile to increase
productivity and for time-to-market benefits. 48% were considering agile for reduction in
costs. And 43% for improving quality.
Agile methodologies can be used by any organization to achieve many different types of results.
We will now discuss some results from various organizations:
- Beck reports that, from 2000, Daimler Chrystler had a team of 12 to 15 people who took 2 years
to write and deploy a system that was originally attempted and failed by a team of 30 over
4 years. - Medtronic states that, in 2005, agile methodologies
helped them to identify bugs earlier, achieve overall higher quality, and work more efficiently
with software QA. They also state that it helped to make work more enjoyable for their
employees, as well as work better together and empower their teams.
- In 2005, VA Software stated that, before using agile methodologies, it had taken 6
QA engineers 3 months to take a product from development end to release. With agile methodologies,
it took 1 full time and 1 part time QA engineer 3 weeks to achieve the same goal.
Teams assigned to projects within companies have had great success with agile, and continue
to implement these practices as we look into the future. Teams that use primarily agile
practices are most often small- to medium-sized teams, with members from various backgrounds,
working on less complex projects. These teams are better able and more apt to adapt to change.
In 2003, Australian group Shine Technologies surveyed 131 members of teams and organizations
who had used the agile methodology. 93% saw a significant increase in productivity, and
49% reported that they saw costs reduced. 88% said that overall quality was better,
and 83% said that business satisfaction was improved.
Despite the hype and excitement surrounding Agile development, it isn’t a good solution
for every organization. In order to successfully adapt to, and be successful in agile development,
engineers must possess strong design instincts when it comes to software architecture. Code
created by an experienced and skilled developer is clean and re-factorable, which is ideal
for keeping the complexity of projects simple. Adversely, inexperienced, or less skilled
developers, have difficulty considering future requirements or scalability. As time goes
on, this can lead to more complex projects that are not well suited to Agile methodologies.
What the future holds for Agile development is yet to be seen. But it is clear that Agile
methodologies are being adopted more widely outside of the engineering department. As
more and more companies adopt Agile methodologies, some will fail, some will succeed, and through
trial and error, it will very much become a viable option when considering how to approach
projects in the future.