What
is agile? Agile
is one of the big buzzwords of the IT development industry. But exactly
what is agile development?
Put simply, agile
development is a different way of managing IT development teams and projects.
The use of the word
agile in this context derives from the agile manifesto . A small group of people
got together in 2001 to discuss their feelings that the traditional approach to
managing software development projects was failing far too often, and there had
to be a better way. They came up with the agile manifesto, which
describes 4 important values that are as relevant today as they were then.
It says, we value
Individuals and
interactions over processes and tools
working software over comprehensive documentation
Customer collaboration over contract negotiation
responding to change over following a plan
That is, while there
is value in the items on
the right, we value the items on the left more.
Ever since then, the
use of methods that support these values has become increasingly popular.
From my use of
various agile methods, I have written about 10 key principles of agile.
These are characteristics that are common to all agile methods and the
things that I think make agile fundamentally different to a more
traditional waterfall approach to software development. They are:
There are various
methodologies that are collectively known as agile, as they promote the values
of the agile manifesto and they are consistent with the above principles.
The most popular ones are
DSDM is
probably the original agile development method. DSDM was around before the term
agile was even invented, but is absolutely based on all the principles we’ve
come to know as agile. DSDM seems to be much less well-known outside of
the UK.
Scrum is
also an agile development method, which concentrates particularly on how to
manage tasks within a team-based development environment. Scrum is the
most popular and widely adopted agile method – I think because it is relatively
simple to implement and addresses many of the management issues that have
plagued IT development teams for decades.
XP Extreme
Programming is a more radical agile methodology, focusing more on the software
engineering process and addressing the analysis, development and test phases
with novel approaches that make a substantial difference to the quality of the
end product.
DSDM is probably the
most complete agile methodology, whereas Scrum and XP are easier to implement
and complementary because they tackle different aspects of software development
projects and are both founded on very similar concepts.
Over the last 10 years,
there is an ever-increasing volume of success stories, where companies have
dramatically improved the success and performance of their IT development teams
and projects. This has caused agile to be widely adopted across a variety
of industries, including media and technology, large corporate and even
government.
In reality, though,
agile is not a magic bullet for all software development issues. The real
trick is to know lots of techniques from various waterfall and agile
development methods, and to select a mixture of the best approaches that are
most appropriate for any given situation. To do this reliably with any
degree of success really requires a lot of experience and skill.
In agile software
projects, project management takes a slightly different form, relying far more
on the project managers skills in communication, facilitation, coordination,
and emphasizing far less on planning and control.
Agile development can
be a very exciting and invigorating approach, although some projects suit agile
more than others. The collaboration and visibility can provide a much
richer and more rewarding experience for teams to develop great software
products. Agile development can be a lot more enjoyable than the waterfall
approach, which requires lots more documentation and is less flexible by its
nature. And when people enjoy their work, its amazing what they can achieve.