Editorial contribution: Laureli Mallek, Program Manager
Early adopters of agile development were often small, self-contained teams working on small, self-contained projects. They proved the agile model can work, to the joy and betterment of software makers around the world. It turned out the waterfall development model wasn't as effective for the development of software as agile project management was for most teams
The popularity of agile project management has led to more organizations scaling agile beyond single teams or projects and applying it to whole programs. Agile has even spread beyond development teams to include IT, marketing, business development, and more.
What is agile project management?
Agile project management is an iterative approach to delivering a project, which focuses on continuous releases that incorporate customer feedback. The ability to adjust during each iteration promotes velocity and adaptability. This approach is different from a linear, waterfall project management approach, which follows a set path with limited deviation.
With today’s customers and businesses requiring rapid responses and changes, agile provides the flexibility to adjust and iterate during the development process. Agile project management is also a cornerstone of DevOps practices, where development and operations teams work collaboratively.
What is waterfall project management?
The waterfall project management approach entails a clearly defined sequence of execution with project phases that do not advance until a phase receives final approval. Once a phase is completed, it can be difficult and costly to revisit a previous stage. Agile teams may follow a similar sequence yet do so in smaller increments with regular feedback loops.
The waterfall project management approach follows a linear, sequential formula. It works well for work that has predictable, recurring processes, yet it can leave development teams flat-footed and unable to adjust faster than a competitor.
A single missed deadline or scope change during a waterfall project can cause outsized impacts on subsequent releases. Additionally, when a team is fully focused on the next phase of work, resolving technical debt or fixing bugs can be painful if the team is fully allocated to new feature work and always pressing forward to the next stage.
Below is an illustration of a standard waterfall project with rigidly segmented blocks of time. This creates a “use it or lose it” mentality that encourages developers, product owners, and stakeholders to request as much time as possible in each time window, since there may be no opportunity to iterate in the future. Typically teams using waterfall try to control scope creep through “change control”, where everyone agrees the original contract is not changed.
The waterfall model can exacerbate some of the known challenges of building products:
- Blockers and dependency management: Traditional project management styles often create "critical paths", where the project can't move forward until a blocking issue is resolved.
- Difficulty getting user feedback and product validation: To add insult to injury, the end customer can't interact with the product until it's fully complete. Thus, important issues in the product design and code go undiscovered until release.
The advantages of waterfall
- Requires less coordination due to clearly defined phases sequential processes
- A clear project phase helps to clearly define dependencies of work.
- The cost of the project can be estimated after the requirements are defined
- Better focus on documentation of designs and requirements
- The design phase is more methodical and structured before any software is written
The disadvantages of waterfall
- Harder to break up and share work because of stricter phase sequences teams are more specialized
- Risk of time waste due to delays and setbacks during phase transitions
- Additional hiring requirements to fulfill specialized phase teams whereas agile encourages more cross-functional team composition.
- Extra communication overhead during handoff between phase transitions
- Product ownership and engagement may not be as strong when compared to agile since the focus is brought to the current phase.
Agile vs. waterfall
Agile was first adopted by software teams, who moved from the traditional, sequential waterfall approach to a method that garnered consistent feedback and adjustment throughout the development lifecycle.
Agile project management takes an iterative approach to development by creating several incremental steps with regular feedback intervals. This promotes adaptability since a team can adjust throughout the product development process, rather than being confined to a linear path. It also allows for regular, high-impact releases that enable teams to deliver a series of wins over time.
Iterative releases unlock multiple opportunities for a team to:
- adapt to changing circumstances from newly discovered requirements to a blocked piece of work.
- gather feedback from stakeholders during the process and iterate responsively without the stress of a final delivery deadline.
- build relationships and connections across roles that make it easier for people to connect and communicate effectively.
Agile allows teams to be more resilient to changes that inevitably occur during a project.
An even greater benefit is shared skill sets among the software team. The team's overlapping skill sets add flexibility to the work in all parts of the team's codebase. This way, work and time aren’t wasted if the project direction changes. (For more see our article on building great agile teams.)
- An agile project is segmented into several incremental steps that include regular feedback intervals.
- A project requirement is segmented into smaller pieces, which are then prioritized by importance.
- Promotes collaboration, especially with the customer.
- Adjusts at regular intervals to ensure a customer’s needs are met
- Integrates planning with execution, which allows a team to effectively respond to changing requirements
The advantages of agile project management
- Faster feedback cycles
- Identifies problems early
- Higher potential for customer satisfaction
- Time to market is dramatically improved
- Better visibility / accountability
- Dedicated teams drive better productivity over time
- Flexible prioritization focused on value delivery
The disadvantages of agile
- Critical path and inter-project dependencies may not be clearly defined as in waterfall
- There is an organizational learning curve cost
- True agile execution with a continuous deployment pipeline has many technical dependencies and engineering costs to establish
Elements to consider when moving to agile
Moving to agile can be challenging, especially when a team or organization is rooted in a more traditional project management approach. Moving to agile practices may require a number of process changes, especially when adopting a DevOps approach, where development and operations teams work closely together to develop and maintain software. When adopting agile principles, a team and the stakeholders must embrace two important concepts:
- The product owner's focus is to optimize the value of the team's output. The team relies on the product owner to prioritize the most important work first.
- The development team can only accept work that it has the capacity for. The product owner doesn't push work to the team or commit them to arbitrary deadlines. The development team pulls work from the program's backlog as it can accept new work.
Let's explore the mechanisms agile programs use to organize, run, and structure work in an iterative way.
A product roadmap outlines how a product or solution develops over time. A roadmap in agile development provides important context that empowers teams to reach both incremental and project-wide goals. Roadmaps are composed of initiatives, which are large areas of functionality, and include timelines that communicate when a feature will be available. As the work proceeds and teams learn more, it's accepted that the roadmap will change to reflect that new information - possibly in subtle or broad ways. The goal is to keep the roadmap focused on current conditions that impact the project and long-term goals in order to effectively work with stakeholders and respond to the competitive landscape.
The following is a simple roadmap for a product team, with initiatives in the boxes and timelines indicated by the milestone-markers in red.
Each initiative in the roadmap breaks down into a set of requirements. Agile requirements are lightweight descriptions of required functionality, rather than the 100-page documents associated with traditional projects. They evolve over time and capitalize on the team's shared understanding of the customer and the desired product. Agile requirements remain lean while everyone on the team develops a shared understanding via ongoing conversation and collaboration. Only when implementation is about to begin are they fleshed out with full details.
The backlog sets the priorities for the agile program. The team includes all work items in the backlog: new features, bugs, enhancements, technical or architectural tasks, etc. The product owner prioritizes the work on the backlog for the engineering team. The development team then uses the prioritized backlog as its single source of truth for what work needs to be done.
Agile teams thrive on metrics. Work in progress (WIP) limits keep the team, and the business, focused on delivering the highest priority work. Graphs like burndown charts and control charts help the team predict their delivery cadence, and continuous flow diagrams help identify bottlenecks. These metrics and artifacts keep everyone focused on the big goals and boost confidence in the team's ability to deliver future work.
Agile runs on trust
Agile processes cannot function without a high level of trust amongst team members and therefore create trust. It requires candor to have difficult conversations regarding what's right for the program and the product. Because conversations happen at regular intervals, ideas and concerns are regularly expressed. That means team members need to be confident in each other's ability (and willingness) to execute on the decisions made during those conversations.
Agile project management is an innovative approach not only for software projects but for projects of all stripes. By providing the flexibility to respond to change during the development lifecycle, agile allows teams to ship higher quality products that meet customers’ needs. Agile empowers teams, builds accountability, and encourages innovation while promoting continuous improvement. Agile gives you the ability to respond to change without going off the rails. And that’s great for any program.
Learn more about agile project management. Plus, dive into agile adoption with agile tools for software teams.