In agile software development, "Scrum" is an integral term. Contrary to popular belief, scrum is not a process, technique, or definitive method. Rather, it is a framework for developing, delivering, and sustaining complex products. And within this framework, various processes and techniques can be employed.
The heart of Scrum is a Sprint, a time-box of one month or a few weeks during which a seable, and potentially releasable product Increment is created. A new sprint starts immediately after the conclusion of the previous sprint.
There are several reasons teams fail to meet their sprint ommitments. Following are some common causes of a sprint failure and ways to overcome them.
Overestimating a team's capabilities is a common occurrence and results in failed delivery. This can be overcome by creating guidelines that limit the team's capacity estimates. For example, the team's capacity for the next sprint should not be significantly higher than their past performance. If the team generally delivers 60 points per sprint, then we can expect they will continue to do same or only slightly more. It is unrealistic to xpect (and commit) 80 or 100 points for the next sprint.
It is generally assumed that the team's efforts will be limited to completing items in the sprint log. Unfortunately, unplanned work more than often gets in the way. Unplanned work is anything not accounted for during sprint planning and not listed in the sprint backlog. It ncludes production issues, urgent requests from management, or unexpected meetings.
In reality, unplanned work cannot be eliminated. However, its impact can be minimized using a couple of strategies, such as reserving capacity for unplanned work, and creating visibility by itemizing the tasks and the relative effort of the work. Often teams, product owners, and management are unaware of the time spent and roductivity loss. Simply creating visibility about the unplanned work can help reduce it.
Poorly Understood Work
To mitigate the risk that stories are not understood properly, teams should actively review the product backlog. During a current sprint, the team should reserve time to review items in the backlog that will be included in the next 2-3 sprints. If the story is too large, they can be split it into smaller stories. If the story requires additional research, they can plan a spike story to analyze the problem. Agile teams aim to maximize the value delivered, which means that they want to optimize their productivity during the sprint. It is important to focus on tasks associated with completing stories – design, build, and test. In other words, clarifying stories, analyzing needs, and researching options should occur before the sprint.
Stuck on a Problem
Often a team member gets stuck on a problem, and puts in a lot of time trying to figure it out herself/himself. Spending too much time doing this goes against the spirit of agile development. Remember that agile promotes collaboration, and "scrum" got its name from rugby, where the team creates a huddle and works together to move the ball up the field. In successful agile teams, an environment that fosters teamwork is essential. Team members should feel safe admitting they are stuck and will need assistance. It is also important to monitor progress so that bottlenecks and issues are identified early. Practices such as paired-programming and mentoring can be used to resolve problems quickly.
In a fast-paced agile environment, we cannot shirk off any part of our work or leave it for later. This becomes technical debt that increasingly becomes harder to pay off. If a team lags in automating their stories or having the promised code coverage from unit tests, the work will pile up and will have to be done at some point before release. The sprint will then suffer as effort will not be spent on new work items. Consequently, repaying older technical debt can be a cause of a failed sprint.
The way forward
Agile development – including sprints – promote team success. The incremental development philosophy creates the opportunity to regularly review upcoming work and the team's capacity to complete that work. Daily stand-ups allow the team to identify and address problems as they arise and identify ways to improve for the next increment. Even if there are small lags or failures, they should not demotivate a team; rather, serve as learning experiences to avoid making the same mistakes again.