Agile development is a group of values, principles and practices based on incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. Agile originated in software development but can be used effectively whenever you are designing and building something new such as developing a new product or conducting a legal campaign.
Agile is a highly disciplined approach to development. Ad-hoc development is not agile.
Agile is defined in the Agile Manifesto as follows
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.
Agile is a set of values, principles & practices that helps us to respond to change
Agile is part of Systems Thinking
We do Agile because we have found that it is a better way of developing software than the alternatives.
Agile optimises learning
Agile optimises business value
80% of value comes from 20% of features
Agile Value Proposition
- Agile development is done by stable, cross functional teams that have all the skills necessary to do the work from beginning to end.
- The customer product owner is part of the team and must be prepared to spend at least 50% of their time with the team.
- If the product owner is not prepared to spend a large amount of time with the team then the team must have a business analyst who acts as a proxy for the product owner.
- In an agile team people have a primary role that they are highly skilled in and secondary roles that they perform as required to help resolve bottle necks and fill gap.
- Where ever possible an agile team is co-located next to each other in an open plan office to improve communication.
- If possible the product owner sits with them for part of each day.
- If the product owner is in another office then the team should send the BA, PM and QA to sit with them part time
- An agile approach is appropriate for any project in which analysis, design and learning are required.
- An agile scrum approach is best for new projects
- An agile kanban approach is best for maintenance and retainer work
- Agile projects start with a short planning phase, move onto an iterative development phase and finish in a maintenance and support phase
- Agile is suitable for high risk and low risk projects
- Agile requires openness, honesty, reason and trust. It is not a suitable approach when the client is secretive, dishonest, irrational and hostile.
How – Agile vs Waterfall
Agile delivers the highest value items within your budget