A comparison of agile methods will reveal that they support different phases
of a software development life-cycle to varying degrees. This individual
characteristic of agile methods can be used as a selection criterion for
selecting candidate agile methods. In general a sense of project speed,
complexity, and challenges will guide you to the best agile methods to implement
and how completely to adopt them.
Agile development has been widely documented (see Experience Reports, below,
as well as Beck, and Boehm and Turner as working well for small (<10 developers)
co-located teams. Agile development is expected to be particularly suitable for
teams facing unpredictable or rapidly changing requirements.
Agile development's applicability to the following scenarios is open to
question:
Large scale development efforts (>20 developers), though scaling
strategies and evidence to the contrary have been described.
Distributed development efforts (non-co-located teams). Strategies have
been described in Bridging the Distance
and Using an Agile Software Process with Offshore Development
Mission- and life-critical efforts
Command-and-control company cultures
It is worth noting that several large scale project successes have been
documented by organisations such as BT which have had several hundred developers
situated in the UK, Ireland and India, working collaboratively on projects and
using Agile methodologies. While questions undoubtedly still arise about the
suitability of some Agile methods to certain project types, it would appear that
scale or geography, by themselves, are not necessarily barriers to success.
Barry Boehm and Richard Turner suggest that risk analysis be used to choose
between adaptive ("agile") and predictive ("plan-driven") methods. The authors
suggest that each side of the continuum has its own home ground: