
We attempt to minimize risk by developing software in short timeboxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation. While an iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team reevaluates project priorities. Agile methods emphasize realtime communication, preferably face-to-face, over written documents. Most agile teams are located in a bullpen and include all the people necessary to finish software. At a minimum, this includes programmers and their "customers" (customers are the people who define the product; they may be product managers, business analysts, or actual customers). The bullpen may also include testers, interaction designers, technical writers, and managers.
Some of the principles behind the Agile Manifesto are:
 |
Customer satisfaction by rapid, continuous delivery of useful software |
 |
Working software is delivered frequently (weeks rather than months) |
 |
Working software is the principal measure of progress. |
 |
Even late changes in requirements are welcomed. |
 |
Close, daily, cooperation between business people and developers |
 |
Face-to-face conversation is the best form of communication. |
 |
Projects are built around motivated individuals, who should be trusted |
 |
Continuous attention to technical excellence and good design. |
 |
Simplicity |
 |
Self-organizing teams |
 |
Regular adaptation to changing circumstances |