- Making sure the development team can be productive and can sustainably increase productivity over long periods of time
- Ensuring that information about the project’s progress is available to stakeholders without interrupting the flow of development activities by asking the development team for updates
- Handling requests for new features as they occur and integrating them into the product development cycle
All 12 principles support project management, but principles 2, 8, and 10 stand out:
(2) Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
(8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
(10) Simplicity — the art of maximizing the amount of work not done — is essential.
Following are some advantages of adopting agile project management:- Agile project teams achieve faster time-to-market, and consequentially cost savings. They start development earlier than in traditional approaches because agile approaches minimize the exhaustive upfront planning and documentation that is conventionally part of the early stages of a waterfall project.
- Agile development teams are self-organizing and self-managing. The managerial effort normally put into telling developers how to do their work can be applied to removing impediments and organizational distractions that slow down the development team.
- Agile development teams determine how much work they can accomplish in an iteration and commit to achieving those goals. Ownership is fundamentally different because the development team is establishing the commitment, not complying with an externally developed commitment.
- An agile approach asks, “What is the minimum we can do to achieve the goal?” instead of focusing on including all the features and extra refinements that could possibly be needed. An agile approach usually means streamlining: barely sufficient documentation, removal of unnecessary meetings, avoidance of inefficient communication (such as email), and less coding (just enough to make it work).
Creating complicated documents that aren’t useful for product development is a waste of effort. It’s okay to document a decision, but you don’t need multiple pages on the history and nuances of how the decision was made. Keep the documentation barely sufficient, and you will have more time to focus on supporting the development team.
- By encapsulating development into short sprints that last one to four weeks or less, you can adhere to the goals of the current iteration while accommodating change in subsequent iterations. The length of each sprint remains the same throughout the project to provide a predictable rhythm of development for the team long-term.
- Planning, elaborating on requirements, developing, testing, and demonstrating functionality occur within an iteration, lowering the risk of heading in the wrong direction for extended periods of time or developing something that the customer doesn’t want.
- Agile practices encourage a steady pace of development that is productive and healthy. For example, in the popular agile development set of practices called extreme programming (XP), the maximum workweek is 40 hours, and the preferred workweek is 35 hours. Agile projects are sustainable and more productive, especially long term.
Traditional approaches routinely feature a death march, in which the project team puts in extremely long hours for days and even weeks at the end of a project to meet a previously unidentified and unrealistic deadline. As the death march goes on, productivity tends to drop dramatically. More defects are introduced, and because defects need to be corrected in a way that doesn’t break a different piece of functionality, correcting defects is the most expensive work that can be performed. Defects are often the result of overloading a system — specifically demanding an unsustainable pace of work.
- Priorities, experience on the existing project, and, eventually, the speed at which development will likely occur within each sprint are clear, making for good decisions about how much can or should be accomplished in a given amount of time.
Contrasting Historical Project Management with Agile Project Management
Traditional Project Management Tasks | Agile Approach to the Project Management Task |
Create a fully detailed project requirement document at the beginning of the project. Try to control requirement changes throughout the project. | Create a product backlog — a simple list of requirements by priority. Quickly update the product backlog as requirements and priorities change throughout the project. |
Conduct weekly status meetings with all project stakeholders and developers. Send out detailed meeting notes and status reports after each meeting. | The development team meets quickly, for no longer than 15 minutes, at the start of each day to coordinate and synchronize that day’s work and any roadblocks. They can update the centrally visible burndown chart in under a minute at the end of each day. |
Create a detailed project schedule with all tasks at the beginning of the project. Try to keep the project tasks on schedule. Update the schedule on a regular basis. | Work within sprints and identify only specific tasks for the active sprint. |
Assign tasks to the development team. | Support the development team by helping remove impediments and distractions. On agile projects, development teams define and pull (as opposed to push) their own tasks. |
Project management is facilitated by the following agile approaches:
- Supporting the development team
- Producing barely sufficient documents
- Streamlining status reporting so that information is pushed out by the development team in seconds rather than pulled out by a project manager over a longer period of time
- Minimizing nondevelopment tasks
- Setting expectations that change is normal and beneficial, not something to be feared or evaded
- Adopting a just-in-time requirements refinement to minimize change disruption and wasted effort
- Collaborating with the development team to create realistic schedules, targets, and goals
- Protecting the development team from organizational disruptions that could undermine project goals by introducing work not relevant to the project objectives
- Understanding that an appropriate balance between work and life is a component of efficient development