Agile is based on an iterative, flexible approach of developing small features, one by one, in a highly interactive way. The team reviews each feature after it is built and re-evaluates the product based on progress. Work is broken down into short time periods called sprints which are usually one or two weeks long.
Rather than being a strict process driven methodology, Agile is based on a number of principles and seeks to restore a balance between the need to work in a structured way, and getting the job done fast and efficiently.
The 12 principles of Agile
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- 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.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Benefits of Agile Project Management
- stakeholders have a better visibility of the project and ‘right expectations’ from each other.
- it allows you to change course and review your plans regularly
- a beta product can be delivered in a short space of time, then improved on
- reduces product development costs and time to market
- the high level of team involvement leads to less defects and a better quality end product
- testing and user feedback happen constantly making it easier to learn and evolve
- risk is reduced that the end product won’t meet the client’s expectations
- changing requirements and priorities can be managed more effectively
- empowers teams to work creatively and effectively, and puts trust in individuals
- stakeholders have a constant view of the project and their expectations can be better managed
Agile project management is not suitable for every project and also has some disadvantages. Agile is difficult to use on larger more complex projects that cross system or organisational boundaries. Because it relies on close user involvement, if the client base is large or users are short of time, the process can be less effective. It is also more difficult to make estimates and predict effort required at the beginning of an Agile project.
Roles in Agile Project management
Agile is most closely associated with the SCRUM Framework which defines a number of roles in a typical product development team:
The Product Owner is the interface between the team and the stakeholders. He communicates progress on the project, organises reviews and agrees budgets, schedules and what is to be delivered. A good Product Owner must be able to understand and negotiate with people in different roles and facilitate agreement when there are differences of opinion.
The Scrum Master is there to enforce the rules of the Scrum and facilitate decision making in the team. He does not make the decisions but rather encourages members to make the right decisions based on the Scrum methods. He is also a problem solver and must actively remove barriers to progress so that development can proceed as smoothly as possible.
The Development Team is generally self-organising and actually produces each feature or product. The team has all of the skills necessary to create the product increment, and analyses, designs, develops and tests within the duration of a sprint. A sprint is a time-box of a month or less and is the time agreed to complete the overall task.
Agile Project Management is an exciting (and sometimes stressful) way of working, especially if you have come from a traditional project management background. But the approach has been very successful in many smaller organisations and software startups where shipping a version of a product sooner provides a real competitive edge.