11/5/13

Agile Project Management Tips #3: Use an Insertion Sort for Prioritization

To be successful, Scrum requires a prioritized backlog of stories. Teams focus their efforts during the sprint on the items with the highest priority. Often, explanations of Scrum imply that the Product Owner (PO) already has optimally prioritized the backlog. That sounds like an easy request, until you realize the process required to achieve prioritization. Supposedly, the PO sets the priority, but that assumes a fully informed PO, which may be asking a lot of one person. Each stakeholder involved with the project has his or her own set of priorities, and backroom lobbying for features can cause conflicts. It is better to have a transparent prioritization process.

There are many ways to prioritize the backlog, but some tend to exclude participation more than others do. For example, when using a spreadsheet, database or document to organize the priority, only one person at a time can make modifications, so it is not an inclusive process. In planning meetings, no matter how large the display, the entire backlog cannot be seen at once, so attendees end up seasick watching the screen bounce around while one person sets the priorities. In other cases, when someone has assembled a printed document with the complete backlog, the prioritization process becomes a bubble sort on paper, stepping through the list, comparing items and swapping them if they are in the wrong order; not the most efficient method. In all of these cases, providing a pre-processed list allows some priorities to slip by without any discussion.

A simpler solution is a physical process that involves an insertion sort. In this method, the PO convenes a prioritization meeting and anyone who has a stake in the project can attend. The meeting space must have enough space to display all the story cards on a wall or window. The process steps are:

  1. The PO places a random story on the wall, and then pulls another from the backlog.
  2. The PO asks whether the current story has higher or lower priority than the one on the wall.
  3. People in the room may offer their advice, but the PO has the final authority for placing the story card.
  4. If the current story has a higher priority than the one on the wall then the PO places it to the left (meaning higher priority), otherwise it is placed to the right (lower priority). All stories must have a unique priority, so they should all be at the same level horizontally (see Figure 1).
  5. Leave space between the cards so it is easier to organize them if a subsequent story is prioritized between two others.
  6. One by one, the PO continues with the remaining stories, reading them aloud, getting advice, and then placing them into the correct priority.
  7. When all stories have been prioritized, write the initial priority on the front of each story card for tracking purposes because priorities change over time. 

It is also useful to track the priority in a spreadsheet or requirement management system.

Uniquely Prioritized Stories
Using this process, our team has been able to prioritize up to 50 stories in a two-hour meeting. It is not recommended to try for more than this since people get decision fatigue and attention spans decline. Depending on the size of the team and of the stories, it may not be necessary to prioritize beyond the top 50 items. Since the process is an insertion sort, it is easy to split the process into multiple sessions.

The benefits of this approach are:
  • Each story has its own moment under the spotlight—there is no a chance for it to be lost. 
  • It is a more democratic process, where the stakeholders can lobby the PO on behalf of their preferred stories and the PO becomes more fully informed. 
  • The unique prioritization avoids the situation where multiple stories end up with the same priority. It forces people to acknowledge the constraints of time and resources early in the project. It also avoids vague priorities where some stories are “high,” some are “medium” and some might be “medium-high.” 
  • The space allows everyone to participate, and the spatial orientation helps people better understand the scope of the project.
There are some potential variations to this process. When two project teams are working in tandem, it is acceptable to create two physical lines. This may expose dependencies. The prioritization process can also help define the minimal viable release points. The PO can move along the horizontal axis to identify the earliest acceptable release point. We maintained the prioritization as we moved the stories to the information radiator (see section 3.5). When a story is added to the backlog, it will have the lowest priority until the next sprint planning meeting when there will be an opportunity to re-prioritize.