Agile Values and Principles
Agile development is an umbrella term for a number of iterative and incremental software development methodologies, such as Extreme Programming (XP), Scrum, Crystal, Feature-Driven Development (FDD), and some others.
Unlike traditional software development methods, agile development processes put the focus of all software stakeholders (i.e., programmers, testers, writers, customers, managers, and executives) on the incremental delivery of working, tested software. With agile, all aspects of software development—planning, analysis and design, development, integration, testing, etc.—are combined in short, frequent iterations, with each iteration serving as valuable input into subsequent iterations.
The entire Agile paradigm is best summed up by the document known as The Agile Manifesto (http://agilemanifesto.org).
| Agile approach |
Traditional approach |
| Individuals and interaction |
Processes and tools |
| Working software |
Comprehensive documentation |
| Customer collaboration |
Contract negotiations |
| Responding to change |
Following a plan |
The proponents of Agile methods say that while they recognize the value of the items on the right, they believe the items on the left to be more valuable.
The two most important characteristic of Agile are the following:
- Traditional methodologies tend to try to plan out a large part of the software process in great detail for a long period of time, which work well until requirements change. So the nature of the traditional approach is to resist change. The Agile methods, however, welcome, adapt to, and thrive on change. A client's priorities can (and in most situations will) shift during the life of the project, and so will the requirements. The Agile methods provide the processes and means to allow clients to change their minds, stay competitive and still get high quality, working software.
- Traditional methods seek to define a process that will work equally well regardless of who is using it. Agile methods assert that no process will ever make up the skill of the development team, and that people are the ultimate source of value in software development. Therefore, the role of a process is to support the development team in their work.
The principles and practices that follow from the core Agile values have helped thousands of organizations around the world dramatically improve the ROI on their software development activities.
Here are some of these principles:
- The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Working software is the primary measure of progress.
- Agile teams welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.