How can we make promises we can keep without a commitment to the sprint content?
So I convinced you that the Scrum Sprint Commitment is not such a great idea. I convinced you it is mainly there for learning. You want to move to a commitment to try to meet the forecast instead of committing to deliver the whole forecast. But your Product Owner has a real problem with this. He understands all this learning rationale but his stakeholders want to know whether he can promise then a certain delivery on a certain date. So can we make promises without the Sprint Commitment?
Making promises to deliver certain backlog items in this sprint
Sometimes a Scrum team is expected to deliver certain backlog items for a specific sprint. Examples can be stuff other teams need to consume, a fixed date commitment to clients, a regulatory requirement etc. Such backlog items have a very high cost of delay so we want to really make sure when we promise to deliver them we deliver them. One way to make sure that is to put them at the top of the Sprint Backlog. If the team is working down the Sprint Backlog by priority (as they should) there is a higher chance they will deliver these backlog items.
But I believe we should be more explicit. We should have a clearer signal that these are special fixed-date items and clearer policies for what to do to make our promises around them. In Kanban teams use classes of service for this purpose. I recommend Scrum Teams in such a context simply do the same. Mark these items with a special color in the Backlog. Establish policies such as “If they are in danger we make whatever effort needed to deliver. Sustainable Pace will be put on hold”. Visualizing that these items are different will earn them a different class of service by the team. It also means that normal items without this fixed-date commitment might be put aside to make the extra effort to deliver those, even at the price of overall throughput. These items might call for deeper estimation and planning up front than normal items.
One key point is to make sure that these fixed-date items are not the majority of items in the Sprint Backlog, otherwise they cannot rely on preferential service. If you have a case of your whole work being fixed-date driven you need to be extra careful with planning and consider taking a time-buffer to protect against the inherent variability in sprint results.
With time the Scrum Team and Product Owner will learn about their ability to deliver these items and might be able to make promises earlier before the Sprint Planning, knowing that the price will only be the effect on other normal items in the sprint.
Making promises to deliver on a bigger project across several sprints
I won’t go deeply into this aspect in this post. Normal Agile Release Planning using history of throughput/velocity and setting hard commitments and soft commitments is the way to make promises you can keep. This means that within each sprint there will be a certain level of hard commitment related to the overall project hard commitment. If that level of commitment is already a stretch for the team then you have a dangerous project in which you cannot really expect to have safe-to-fail thinking or improvement, rather a tight focus on meeting commitment. Sometimes we have those projects. If you are always doing these kinds of projects time to look in the mirror and have a discussion about whether you are really trying to set up the organization for opportunities to improve/learn or just constantly meet commitments without any slack for improvement.
In 8.5 years, we’ve never had to sacrifice sustainable pace to deliver per a business deadline. If deadline not realistic for features customers want, and they can’t adjust deadline, we ask them to prioritize, & put lower priority features to later. Most importantly, we make sure we understand the purpose of the new features, what biz problem are we solving, what value is needed, then we think of ways to simplify. Often, we can deliver 80 – 90% of what they really need for half the cost.
We abandoned the Scrum ‘commitment’ practice years ago. It didn’t make us work harder or smarter. We always do the best job we can. Sometimes something happens and you can’t do as much as you thought. Sometimes you can do more. When there is trust both ways, you don’t need ‘commitment’. We’re committed to delivering the best possible s/w we can – that’s the commitment that means something.
We often do themes that take several sprints. We “hide” the new stuff w/ a jvm option or db value until it’s all ready to release. If we have a hard deadline, we communicate continually about our progress, what we think we can finish, making sure we know the priorities, finding ways to work around what we can’t deliver by the deadline.