Agile Project Management
For projects involving a significant software component, traditional project management can be somewhat ineffective since the requirements are elusive, volatile and subject to change.An alternative approach, Agile Project Management (APM) is emerging in the industry.
APM is a highly iterative and incremental process, where developers and project stakeholders actively work together to understand the domain, identify what needs to be built, and prioritize functionality.
The difference between Agile and iterative development is that the delivery time in Agile is in weeks rather than months. Since Agile Management derives from Agile software development ,it follows the same standards defined in the Agile Manifesto when it comes to collaboration and documentation. Several software methods derive from Agile, including Scrum and Extreme Programming.
Agile methods are used when these conditions are present:
- project value is clear
- the customer actively participates throughout the project
- the customer, designers, and developers are co-located
- incremental feature-driven development is possible; and visual documentation (cards on the wall vs. formal documentation) is acceptable.
Figure 1.1 depicts the Agile Development Model.
Figure 1. 1 The Agile Project Life Cycle Module
The Agile approach consists of many rapid iterative planning and development cycles, allowing a project team to constantly evaluate the evolving product and obtain immediate feedback from users or stakeholders. The team learns and improves the product, as well as their working methods, from each successive cycle. After a streamlined planning, requirements definition and solution design phase is completed to get the project underway, iterations of more detailed planning, requirements, design, build and test take place in waves. This approach allows for immediate modifications of the product as requirements come into view. APM requires a dedicated full-time project team that includes a customer or end user, where team members work from the same location.
Unlike traditional project management ,which emerged from the construction, engineering and defense industries and dates back to the 1950s, APM was born in the twentyfirst century.
In 2001, prominent software developers from both IT and software engineering domains, convened to arrived at a consensus on how the software development industry could produce better results.
This meeting produced the Manifesto for Agile Software Development ,which states that the “highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
APM development is conducted collaboratively, with a small co-located team. This core team usually consists of the following specialists:
- two developers who write code in pairs (for quality control)
- the customer/end-user
- IT architect(s),
- a business analyst
- a project manager.
The work is accomplished through a series of sessions where the team writes code, then tests working modules of the system and repeats the process. There is minimal documentation as the team relies almost exclusively on informal internal communication.
Again, this differs from the traditional approach where a considerable amount of time is invested in planning and a significant amount of requirements documentation is produced. The Agile team identifies and prioritizes the features based on business value, and after high-risk components of the system are produced, works on the highest value features first. This approach works if the solution can be delivered incrementally to the customer. If this is not possible, features still can be built incrementally and then integrated into the first release of the system.
There are several key elements that provide the basis for APM. It is important to note that these techniques can also be used in traditional software development methods to improve project performance. They are:
1. Visual control
This is a “cards-on-the-wall” method of planning to assist a team in organizing the work of the project. For example, one successful Agile project team placed different color groups of cards that represented the features of the solution on the wall. The features that were designed, developed, tested and in production were one color, the features that were designed, built, tested but not yet put in production (but ready to go) were another color. The team was able to see at a glance where they were with each feature set. Visual control is a valuable technique for all projects, since it ensures that every member of the team views the project the same way.
2. Co-located high-performing teams
In Agile development, all the key team members are co-located, including the customer/end-user, preferably in a work room. This approach greatly increases the quality of coordination and communication. However, this may represent a significant cultural change for IT developers. In traditional development methods, the developers typically work independently, and rarely interact with the customer until the solution is fully developed. Since project managers are responsible for building a high performing team, they need to ensure everyone is working well together and that they have been assigned developers who truly can work in this collaborative manner.
3. Test-driven development
In cases when the customer is having a difficult time articulating requirements, Agile teams often use test-driven development. Using the same successful Agile project team mentioned above as an example, the test cases were often developed first, and then the team backed into the requirement. This obviously requires more iteration between requirements, design, development and test. The entire four-stage cycle is collapsed. In any case, Agile teams almost always develop test plans at the same time they define requirements; if a requirement isn’t testable, then the requirement is not yet fully developed. This is a best practice that can be used in traditional development to ensure requirements are complete, accurate and testable.
4. Adaptive control
Everyone on the team is constantly adapting, which may make some team members nervous, especially those that crave structure. Because of this dynamic environment, the project manager needs to be seen as a leader, not a taskmaster. Instead of setting rigid instructions for the entire team to follow, the project manager facilitates the team in establishing working relationships, setting ground rules and fostering collaboration. Agile team members continuously adapt to improve their methods as they incorporate lessons learned from the previous cycle into the next iteration, also a best practice for any project.
5. Collaborative development
APM relies on collaboration among all team members to deliver the results, capture candid feedback and implement learnings on the next iteration of the solution. This is one of the strengths of APM - constant feedback and improvement. The project manager completes the initial planning and the business analyst defines and prioritizes the solution features in collaboration with the customer and technology representatives. Then the Agile project teams collaborate on the design, development, testing and reworking of each incremental build. It is this constant collaboration with the customer that promotes project success.
6. Feature-driven development
This practice greatly reduces complexity, because it allows the team to focus on one feature and only one feature at a time. For example, one team is working on Feature #4 and that’s the team’s only focus. They don’t concern themselves about Features #1-3. It is the business analyst and project manager who ensure the next feature in the backlog is truly the next priority, based on business value and risk. Typically, high-risk components or core infrastructure pieces are built first, and then everything else is prioritized based on business value. The goal is to build the featuredriven components with only a one-way dependency to the core system; therefore, specialized components are independent of each other and can be created in any order or even in parallel.
7. Leadership and collaboration rather than command and control
“The principles of APM are timeless. If you look at APM, it links much more closely to leadership. It addresses a lot of the steps that facilitate leadership much more than traditional management,”
Lean-Agile Consulting Practice at CC Pace Systems in Fairfax, VA
The project manager works with the client management ,the IT management and the key stakeholders to ensure they know the project’s status. Additionally, the project manager removes any barriers hindering the core Agile teams. The business analyst manages the business benefits of the project and continually focuses the Agile team on the business need.
8. Move from C (cost) to R (revenue) focus
Features are prioritized based on value, such as increased revenue or market share. It’s the business analyst’s role to ensure the Agile project team is not investing too much into the development of the new solution. If so they will have eroded the business case and the project will cost more than the organization will gain. While the project manager focuses on project costs, the business analyst focuses on the total cost of ownership that includes not only the development or acquisition costs of the new solution, but also the cost of operating the system after it is deployed.
9. Lessons learned
After each cycle, the team holds a lessons learned session to determine what they can do better on the next iteration. As the team learns, it adapts how the members are working together to continuously improve team performance.
“The traditional project management approach is a linear approach where you try to get it all done at one time. You do a lot of very detailed planning at once upfront and then deliver it in what’s known as the ‘Big Bang’. That industrial age thinking has spilled over from software development to other projects as well.”
This is the heart of the difference between Agile and traditional project management .
The ‘Big Bang’ now comes from the greater flexibility and collaboration APM provides. “Just enough” planning is done up-front. As each increment of the system is built, the team gathers input and learns from customer feedback. Since the customer sees and/or experiences a working prototype, he or she is better able to refine or redefine requirements and describe to the team what the organization really needs. The Agile method embraces changes that add value, and reduces the cost of change through iterative development. Making changes to a small module is very cost-effective, compared to designing and developing a huge system and then trying to make changes to it.
“At its heart, project management ,whether you are doing traditional or Agile has very similar principles. It’s about doing a good job for the customer. It’s about leading a team. It’s about delivering measurable business results,”
Many of these principles or practices can be implemented into most team-structured environments. Yet, some project management professionals may discard the principles of Agile management if they are unable to adopt all of the components and practices. This is a mistake. For example, what happens if they cannot get the user to sit full-time with the team in the workroom? It doesn’t mean they can’t incorporate some of the other pieces of Agile management such as visual control and featuredriven development. Besides, even if a user cannot be involved on a full-time basis, most users are willing to participate on the team, especially during the testing and feature prioritization. The rest of the time, the business analyst can represent the user while the full-time core team continues to work together.
Incorporating Agile management techniques into projects fosters a focus on the benefits of each feature. In traditional project management ,the teams strive to finish the project on time and under budget and often lose sight of the overall benefits the entire effort is intended to bring the organization. It’s important to remember the strategy the project is expected to advance as well as the total cost of ownership and not just the project costs. In this way, the benefits of the project will be obvious, whether the team is constructing a building or developing a new business solution.