The Manifesto for Agile Software Development focuses on a set of relative value statements:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to 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.
- Manifesto for Agile Software Development
The authors of the Manifesto went on to elaborate their values with twelve principles. Different approaches to agile—like Scrum, Extreme Programming and Lean Software Development—describe how to implement these principles as a set of concrete practices which focus on delivering working software based on highest customer value.
Agile software development recognizes that software development occurs in a volatile environment. They place a heavy emphasis on inspecting and adapting both the software being developed and the development process. Agile teams are cross functional, highly collaborative, and self organizing. Teams work iteratively to deliver small pieces of working software which can be evaluated by the customer and modified as requirements change.
They also frequently reflect on their own way of working and alter it to improve their ability to deliver software. They will tailor their practices to meet the unique requirements and constraints of their business. For example, an agile team and its customer representative usually work in a single room for the duration of the project. This maximizes the team’s ability to communicate and reduces the overhead of lengthy written specifications and management tools needed when a team is distributed. Working in the same room may not always be possible and the team’s practices may need modification to cope with a distributed agile development approach
The agility and adaptability of the process to fit the work, business, and team members is the key to being agile. A team simply cannot be agile without this approach, even if they faithfully adhere to a published agile process.