What exactly is agile?
Agile project management is an iterative process with a focus on delivering real value to the customer. All projects have unknowns. Some projects aren’t completely defined. In some cases, customers can change their minds along the way.
By adopting some core principles, Agile processes enable us to adapt quickly to change and uncertainty. By being flexible and delivering working software frequently, waste is minimized and quality is optimized.
Agile project management sticks to a mantra of flexibility and collaboration that builds consensus quickly in a fast-paced environment.
The Agile Principles
The Agile Manifesto was published in 2001 and outlines 12 principles:
- Customer satisfaction by early and continuous delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstance
Agile software development was born out of a need to find an alternative to traditional project management. With traditional approaches such as the waterfall method, it is difficult for teams to respond to change and uncertainty.
The waterfall approach divides work into separate phases where the outputs of each phase feed or flow into the next phase sequentially. The next phase can only start once a defined set of goals are achieved for the previous phase. This works in certain circumstances where objectives are extremely clear and well documented in a static environment where requirements, technology and strategy are not prone to change.
Because a product is not delivered until the end of the final phase, there is a risk that the final delivery does not fully satisfy current needs. The waterfall approach lacks collaboration and feedback throughout the process with the resulting risk that money is spent on developing a product or features that nobody wants.
Agile addresses these weaknesses and is especially suitable for large complex projects. It splits work into regular cadences known as iterations or sprints with the aim of having production-ready software at the end of each. Every aspect of development including planning, requirements, design, development and testing are continually reviewed and revisited throughout the entire project lifecycle.
At the end of each sprint, the team has the opportunity to inspect and re-evaluate the project’s direction. This ultimately allows all stakeholders to evaluate success in the real world and empowers the team to be flexible and readjust to optimize value.
By collaborating with the customer and gaining feedback regularly, product requirements can be adapted cheaply and rapidly. The end result is a high quality product that gives real value to the end-users and one that maximizes the business’ return on investment.