What is Agile?
Understanding why more workplaces are becoming agile
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.