A lot of people have
been asking the question "What is Agile Software
Development?" and invariably they get a different
definition depending on who they ask. Many people
will correctly say that agile software development
conforms to the
values and
principles of the
Agile Manifesto, and those sites are clearly
great resources. But, if you're looking
for a "sound bite" definition of agile software
development, that's a little harder to come by.
Furthermore, the definition that you get might
not promote the level of maturity, or perhaps
discipline is a better word, that you're hoping
to achieve. Here's a definition that I
think is pretty good (the layout of the points may be
important) which I hope you find useful.
Disciplined agile software development is:
An iterative and incremental (evolutionary)
approach to software development
which is performed in a highly collaborative manner
by self-organizing teams within an effective
governance framework
with "just enough" ceremony
that produces high quality solutions
in a cost effective and timely manner
which meets the
changing needs of its stakeholders.
You might find my articles
The Criteria for Determining Whether a Team is Agile,
Examining the Agile Manifesto,
and
Agile System Development Lifecycle (SDLC) to be interesting
introductions to agile software development. Also,
my
various agile surveys provide some insight
into the how Agile is being adopted within
organizations.