Let’s try an experiment. Open your iteration backlog and take a look at the stories that are slated for your current iteration. Do you see a theme that ties each of them together?
Too often, the set of stories that teams select for their iteration has no overarching theme or focus. In fact, while these stories may be individually valuable, at times their selection can appear almost random.
But high-performing agile teams begin each iteration planning session by defining an overarching goal that they would like to accomplish by the end of that iteration. This shared planning helps the team select a cohesive set of stories that will help them reach that goal. However, there’s also another advantage to crafting a great iteration goal.
A great iteration goal helps your team understand why it’s embarking on the iteration in the first place. This context not only better positions your team members to make more informed decisions during the sprint, but it also gives them guidance in the event that they need to adjust their iteration plan during the iteration to react to unexpected developments.
Crafting great iteration goals is easier than you may think. The best time to craft your iteration goal is at the beginning of each iteration planning session. Doing this at the outset will help set the context for what the team will be tackling over the next iteration and better equip your team to select the stories that will support that goal. While the process of crafting a sprint goal is typically led by the Product Manager, ideally the entire team should be involved in this process. This will create a shared understanding of the goal that the team is trying to accomplish and create buy-in towards that goal.
When crafting your iteration goal, remember that the best goals are specific enough that there will be no ambiguity as to whether or not the team accomplished the goal, but also are not so specific as to constrain the team’s flexibility to adapt their iteration plan in pursuit of deciding how to best achieve that goal.
For example, Increase the number of social login options available to the user is a great example of an iteration goal, since it defines a clear direction but leaves the flexibility to the team to decide how to best achieve that goal.
As another example, while Improve the long-term maintainability of the reporting framework is a great iteration goal, Reduce technical debt is not. This is because while the former gives the team a clearly defined and high-level objective to aim at, the latter is vague and tough to quantify. This can make it hard for the team to clearly decide at the end of the iteration whether or not they actually achieved their goal.
So where do iteration goals come from, you ask?
When first creating an iteration goal, many teams are tempted to just select stories as usual during their iteration planning session and then simply derive an iteration goal from any common themes they spot in those stories.
While at first this approach may seem better, it often leads to vague iteration goals that merely describe the lowest common denominator found in every story selected for that iteration. As a result, it can be hard to quantify whether these goals were achieved at the completion of the iteration or even whether completing the goal actually yielded any value to the organization and the overarching release.
The best iteration goals are often derived from your overarching release goals. Specifically, if you’ve defined a high-level goal for your release, you can begin by decomposing that goal into roughly iteration-sized chunks, of which each chunk will become the starting point for an iteration goal. Don’t worry if you’re not sure how to decompose your high-level goal into iteration-sized chunks as this is a great opportunity to involve your technical team early so they can help you understand how large each chunk of work is likely to be. Not only will this increase the likelihood that your initial chunks of work fit together well, but the early involvement of your team will also help to create a shared understanding of what the goals of the release are, as a whole.
Crafting clear iteration goals helps your team understand how the work they are doing in each iteration is a part of something bigger. Helping your team see the bigger picture not only equips them to make better-informed technical decisions during the iteration, but it also gives them valuable insight into the overall vision for their product as well as how the work they are doing today contributes to that vision.
Curious to try this for yourself? Invite your team to collaborate with you during your next iteration planning meeting to set an iteration goal that moves your team closer to success. Then, after the end of that iteration, let us know in the comments below how it went! I’d love to hear how this worked for you and your team!
Jeremy Jarrell is an agile coach who helps teams get better at doing what they love. When he’s not mentoring Scrum Masters or Product Owners, Jeremy loves to write on all things agile. You can read more of his thoughts at www.jeremyjarrell.com, see his videos at Pluralsight, or follow him on Twitter @jeremyjarrell.