The Agile method of project management and software development is designed to be ready for change. Agile project management refers to an iterative approach to planning and guiding project processes. Just as in Agile software development, an Agile project is completed in small sections. These sections are called iterations. In Agile software development, for instance, an iteration refers to a single development cycle.
Agile project management is designed to be flexible enough to handle projects with potentially moving, changing and evolving requirements and agile enough to be able to provide the end customer with functional portions of the overall final solutions promptly and as needed. It transcends the rigidity of the Waterfall process by embracing the change in scope that can so often accompany a project of even the most dedicated requirements.
Agile Project Management Advantages
There are many advantages of the Agile method of managing projects and project planning over the more traditionally considered methods of project management practices.
In the project management field, Agile provides project teams, sponsors, project leaders and customers many project-specific benefits, including:
- More rapid deployment of solutions
- Reduced waste through minimization of resources
- Increased flexibility and adaptability to change
- Increased success through more focused efforts
- Faster turnaround times
- Faster detection of issues and defects
- Optimized development processes
- A lighter weight framework
- Optimal project control
- Increased focus on specific customer needs
- Increased frequency of collaboration and feedback
It is quite common on Agile projects for the team to do the planning, not just the manager/coach. Project planning is so important that the organization must make it a top priority to get it right. Organize the project into short iterations. The only true measure of progress on a software development project is the delivery of working software.
Best Practices in Agile Project Planning
In Agile project management, the product itself is developed in sprints.
The goal of sprint planning is to determine the features and functionality that will be included in the next iteration.
Before each sprint begins, a sprint planning meeting takes place between the product owner and development team members. The user stories and backlog are reviewed to determine the tasks that can be completed during the sprint. These plans deliver a finer level of detail (compared to the high-level release plan), including which tasks are to be performed by which team members and how long each task will take.
Activities that occur during the project planning process in the Agile method include the following.
Agile team members break the features down into tasks and then team members take those tasks on. As a matter of best practice, look at the time estimates and try to break any task that may take longer than a day down into smaller tasks. This helps to reduce uncertainty and foster successful task completion. It also feeds into the job of estimating, as it is much easier to estimate the time required to complete a smaller task.
Estimating the time to completion can seem like a matter of luck and guesswork more than science, but some principles can help to make it seem less like guesswork. As a best practice, rely on past success to estimate a particular effort. For example, rely on past feature delivery time actuals to plan future estimates. If the team was able to deliver X number of features in the previous iteration, then plan to deliver X number of features in the current cycle. Best practices in Agile method estimating would logically suggest these useful practices for estimating time to completion:
- Reference historical data – team specific
- Be realistic, not optimistic
- Estimate based on smaller units of work rather than larger ones. Estimates based on tasks rather than features, therefore, are going to be more accurate
User stories development
By communicating with the customer, you can determine the overall goal for the project and, in turn, an overall goal for the sprint/iteration. Rely on that goal to develop your feature/user story priorities and then allow your priorities to guide the selection of which features/user stories to develop during the iteration.
There are two types of backlogs to consider:
- The Product Backlog is the master list of things to be built into the product.
- The Iteration Backlog is the list of priority items to be built during the current iteration.
The key to managing backlogs is managing priorities. Work with your customers to ensure that the most important features are delivered. The key is to deliver reliable results by engaging customers in frequent interactions and shared ownership. The customer can tell you which backlog items have the highest priority, and which backlog items have the highest priority at that time. Priorities can shift, so be sure to check with customers periodically to make certain that the next iteration is still being planned appropriately.
Agile scheduling is perhaps the most “project managerial” of project management activities. The following are some useful guidelines for managing scheduling:
- Schedule in detail only for the immediate iteration: Sprints/iterations are useful for managing uncertainty, but it is adaptability that drives sprints/iterations. Scheduling too far in advance prevents you from being nimble and responding to changing priorities.
- Involve the entire team: Scheduling is a team activity that is driven by estimates, so the team should be involved in the entire process, not merely for accurate scheduling, but also to promote buy-in.
- Design and testing are also part of development: Keep the time for these required activities during sprints/iterations in mind as you build estimates and schedules.
- Include time for the demo meeting: The demo is an important part of the release and should be part of the schedule.
The Agile method attempts to limit project uncertainties by attempting to limit dependencies through sprint/iteration planning because tasks are not developed with an overarching project in mind, but in a more granular form in which a set of features can be developed in parallel and delivered in working order during the one to four-week period that typically defines a sprint/iteration. As a matter of best practice, plan your sprints/iterations to avoid dependencies.
Teamwork and Collaboration
Agile projects are managed by the entire team, primarily at the iteration level. The team must work together to select features from the backlog that will be built into the current iteration, estimate time, schedule work, and drive the project towards the product vision. The project manager maintains the plan, but it is really the team that owns the plan and is responsible for meeting plan requirements and deadlines.
Agile is about individuals and interactions, but it is also about teamwork and team ownership. In traditional project management, it can feel as though the project manager is in a lonely position, gathering data to put together a plan that is then handed down to task owners. In Agile the project manager is a task owner among task owners and everyone contributes.
Whether your organization is ready to adopt the Agile methodology, already has, is considering or possibly struggling with it, keep in mind that the approach is very different from what some team members are used to, and they may initially want to reject it or be very slow to adopt. That doesn't mean you can't or won't be successful with it. Agile as a development methodology and a project management methodology has proven itself to be highly successful on many types of projects, including mission-critical projects at NASA.
Along with the aerospace industry, many critical government projects and high dollar private industry projects where mistakes aren't OK and human lives may hang in the balance rely on Agile methodology. The Agile method is effective in the right situation, but still requires a significant amount of project planning. As is so often said, failure to plan means planning to fail.