Agile values and principles are the core foundation by which Agile organizations operate and make decisions. Everything we do is based in these. With that being said, viewing every principle through a holistic perspective is absolutely necessary. Every word in the principles we live by has value and impact. So, when we reduce a principle to a three word summary, I believe we do ourselves a disservice. This practice often results in focusing on part of the principle without the balance of the other side. Through this oversight, we inadvertently create environments where there is unbalance that leaves people frustrated and confused. They begin to believe that Agile is the problem. But, the real problem is our failure completely embrace the Agile values and principles and settle for anti-patterns instead.
Today, I’d like to take a deeper look into Agile Principle #8 which states: Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
People often refer to this principle as the sustainable pace principle. The most common description given of how we practice this principle is that the development team should not be expected to do more work than they can complete in a normal business day. We don’t want people working 70 hours a week because they are forced to do more work than is possible during a normal work week. Working at that pace is something a team may be able to do for a sprint or two but they cannot work at that pace indefinitely. When people are tired and overworked they make more mistakes and it actually slows down their ability to produce work. It also impacts motivation. When people are overworked and have no work/life balance motivation dwindles.
But there’s another part to this principle that I don’t hear quoted as often. It’s the part that talks about the constant pace at which the sponsors, developers, and users should be able to maintain. This is about the consistency of our delivery, sometimes referred to as predictability. Developers should be able to trust that sponsors and users will allow them to work at a sustainable pace. In return, sponsors and users should be able to trust that developers will consistently provide a continuous stream of valuable software. The team has a responsibility to be transparent with the sponsors and users regarding how much work they can complete in a certain timeframe. They also have a responsibility to be transparent when the forecast must be changed along the way due to new information or unforeseen problems. This gives the sponsors and users the ability to communicate and make decisions regarding the impact of the forecast change.
How does this impact the way the team conducts planning and communicates their forecast? Teams should plan for as much as they can realistically complete and communicate that forecast. Then, they should strive to complete 100% of their forecast every sprint. If something happens to prevent the completion of the forecast they should communicate as soon as feasible to stakeholders so they know what to expect.
Should teams forecast 125% of what they believe they can realistically complete and be happy if 80% of the work gets finished? No. Why? First, because it sets unrealistic stakeholder expectations to communicate more work than the team can realistically expect to finish. Second, because it contributes to a lack of trust between the stakeholder and the team when the team keeps promising work they consistently don’t deliver. Third, because the extra time planning and tasking stories that aren’t likely to be worked creates waste and adds unnecessary time to the planning process.
Then what do we do with “stretch” stories? It is my belief that “stretch” stories are not a part of the forecast. Plan and communicate what you believe you can complete. If the backlog is groomed properly it will always have at 1-2 sprints worth of work in “ready” state. So, if the team runs out of work they can always agree to pull in another story. The solutioning and tasking for that story can take place when the decision to pull it in happens.
If the team consistently gets 100% for 3-5 sprints, stretch yourself and bring a few more points into your sprint forecast. It may take you a couple of sprints to get to 100% again but it will stretch your ability to produce work and push you to incorporate practices like automation in order to move faster.
There should be an understanding that no team will always complete 100% of the work forecasted. This is another part of the concept of trust and transparency. Stakeholders and customers trust that developers will always strive to complete 100% of the forecasted work. Developers trust that when something happens and they can’t deliver 100% and communicate openly to stakeholders and users there will be grace and understanding extended.