We all do prioritization on our every day life, because we have limited time for every set of items to execute, and that’s why we choose the most important actions to execute first and followed by lesser important.
Similarly we prioritize functionality or tasks in software development, because few functionalities are more important than others.
Let me explain few real life situation, and how we prioritize our actions with in that situation, and then will relate those concepts in the situation of software development to prioritize stories in Product Backlog.
Real Life Situation
30 min break with in 1 day training, Your phone was switched off during the training, You found 10 missed call during the break. and wants to call back few of them.
Identifying expenses with limited budget.
Visiting remote town far from your home location for business purpose, and planning to meet few of your friends and family member as on when you get time from your business meetings.
Situation : Product backlog Prioritization.
you have 35 stories in backlog not yet committed, want to prioritize the stories for next sprint.
Amount of Money
Situation : Backlog Prioritization
Story / Functionality / action to execute
10 Missed call to call back
10 Expenses, Like Electricity bill, buying new furniture etc
10 Friends at different location to visit
Situation : Backlog Prioritization
35 Stories to work on
What to Prioritize
Whom Should I call first and whom should I call later. and order I will call them
What are the expenses I should plan first, and can not skip, and what are the nice to have kind of expenses I can plan for latter.
The sequence of the friend I will meet, so that In case If I don’t get enough time to meet all, at-least I will end up by meeting most important friends.
Situation : Backlog Prioritization
Which story should I put top of my list by making its rank 1, and followed my comparatively less important stories. So that during sprint planning or grooming I can identify which story to pick first followed by the next story in rank.
What to consider during Prioritization
- Possible duration of the call
- importance to make that call
- any other call related to the important calls
- Amount of each expense
- how important to make that expense
- Related or depended expenses
- Distance from my business location
- what are the importance level its is, for you to meet your each friends.
- friends living in close proximity
Situation : Backlog Prioritization
- Business Value of each story
- Amount of work for the stories
- Associated Risks and its mitigation time for the stories
- Dependencies associated with the stories
- any related story, can be done together
Product Backlog prioritization is one of most important exercise in agile software development. Any projects is successful if the stakeholders or clients or business gets most valued functionality at earliest. And that is possible by effectively and consistently prioritizing the requirements (users stories).
Backlog prioritization is required to organize the product backlog items (user story/Defects/Spike etc) to make the sequence of its development and deployment.
This Sequence is followed by the scrum team to choose product backlog items during grooming or sprint planning.
The influencing factors for prioritizing product backlog items are
- Customer Satisfaction
- Business Value
- Risk & Opportunity
Benefits of backlog prioritization
These are the key benefits of an effective and consistent backlog prioratization
- Fastest return of investment
- Customer or Business satisfaction
- Better management of dependencies
- Minimizing Risks
- Keep focused on Value driven development.
- Effective Grooming by saving time of selection story
- Effective Sprint Planning by saving time of selection story
- Better visibility to pick stories within current sprint scope, if there are bandwidth
- Better visibility to drop stories from current sprint scope, if bandwidth reduce because of many reasons like Team members absence, emergency production fix etc.
Treatment of different backlog Items during prioritization
All Items in product backlog are treated equally during backlog privatization, that can include, Defects or Bug, New Functionality, Enhancements, Spikes.
There are many influencing factors to consider during prioritizing backlog items. most important consideration factors are.
1. Customer Satisfaction
We always prioritize stories by keeping in mind the factor of customer satisfaction, by assigning the functionality (backlog item) a high priority that have have a probability of higher customer satisfaction. and prioritize those functionality first without those customer may get dissatisfied.
So we need to implement the basic needs first , then the performance area, and then the delightful functionality
check out the section below for Techniques of product Backlog prioritization, below that explains Kano Model to understand how measurement of customer satisfaction help us to prioritize our Product backlog item
2. Business Value
Understanding the business strategy and business goal is very essential to prioritize the functionality. That’s why the product owner or the business Analyst are best person to prioritize product backlog item. Identifying which functionality will add most value to meet the business goal is helpful to prioritize the product backlog item.
The sponsor, Sales team, or strategic thinker influence the business value by targeting long term benefit or immediate value addition to counter competitors.
3. Effected number of users / or frequency of use
This factor is product specific, not everywhere considered as prioritization factor. The functionality may be prioritize by keeping in mind the number of users will be effected. for an example, in a eCommerce web site look and feel of consumer home page will get higher priority than a supplier home page.
Similarly if a functionality will be used more often, that should be prioritize early to work on any additional optimization work for it if needed.
4. Cost to develop and implement the functionality
High cost not necessarily be on low priority, we need to think rationally, about each functionality’s cost and ROI. Cost is not the only factor, during prioritizing we need to think about the return of the functionality as well.
Definitely Low cost – High return will be on top priority and similarly High cost – low return can be low priority. But High cost – high return can also be at top of the list, considering other factors of prioritization.
Ranking high risks functionality in top of the list, maximize the early mitigation. Where keeping high risk functionality for later stage of the project, increase overall risk of implementation.
Functionality with high complexity or difficult, is advisable to start working on early stages of the project, As the team is fresh so allocation of skilled and experience member is easy. And If it takes more time than estimated, the team will also have more room to adjust the extra time.
Lets utilize these consideration factor to get the Priority rank
There are many techniques to prioritize product backlog, we will discuss in details about MoSCoW method and Kano Model, later in this article.
Here lets talk about getting the priority by considering few of the above factors.
- Identify the factors your project will consider to analyze the priority, you can use all the above factors or most impact-full factors to do this exercise in this example we are using three factors a.) Customer Satisfaction, b.) Business Value, c.) Cost.
- Allocate the weightage to each consideration factor, in case you think all the factors are of equal weight for your particular project, just give 1 to all. in this example we have allocated 12 to Customer satisfaction, 10 to Business Value and 7 to cost.
- Have your backlog ready with the items including Defects, stories, Spikes etc. In this example we are assuming our backlog have 10 stories that we are prioritizing.
- Define a scale to provide rate to each story against its consideration factors. In this example we are having a scale of 1 to 10.
Refer the below Matrix. followed by the explanation, to get the calculation mechanism to achieve the priority Ranks
In this matrix has the consideration factors and its weightage as column and the 9 backlog items (Story 1 to story 9) as row.
The numbers inside the matrix are the relative values to denote the rate for each story for its respected consideration factor. The rates are in a scale of 1 to 10.
Each story has a total value in the 2nd last column. Its represents the cumulative value of all the factor’s value for that story. Factors value for a story is calculated as weight multiply by its Rate .
The last column represent the priority or rank of the story, maximum value is on high priority with rank 1, and minimum value is low priority. In this example the top priority story is story 6, and lowest priority story is story 3 and story 4.
End of Section Product backlog Prioritization
Backlog prioritization exercise is advisable to conduct frequently, at least once a week. the candidate backlog items for prioritization are depend upon what stages that item is in.
Generally Backlog Items under Initial stage (Backlog) or in Groomed or Defines stage are potential candidates for prioritization.
The Backlog item those are already committed for the current sprint, or currently in progress, or completed or accepted, does not need to be prioritized. Because those are already prioritized or ready to deploy.
Some prioritization techniques needs the size or estimated value to prioritize, thus it take only the backlog items from Defined/ Groomed state to prioritize.
There are many ways of doing prioritization. most commonly are as below
With this technique we categorize our user stories into different baskets like high low medium etc. and pick backlog items to groom, plan or construct. This is techniques of basketing Product backlog items to prioritize in groups.
Play the video below to watch practical demonstration in ALM tools like Jira, Rally etc. prioritizing backlog with different techniques including affinity analysis.
With this technique we arrange our backlog items, rather I will say the functionalities, keeping in mind the customer satisfaction factor. The Kano Analysis chart have different areas of customer satisfaction, and we place our backlog items on those areas, and prioritize accordingly. The different areas of functionality are as below
- Must be Functionality
Customer usually take those functionality for granter, If implemented customers are just neutral, but if not implemented or poorly implemented, customers are very dissatisfied.
- One Dimensional Functionality
Those are the functionality satisfied the customer if implemented and dissatisfied if not implemented. Those functionalities are often discussed with mutually agreement between development team and business/customer.
- Attractive Functionality
Those are the functionality satisfied the customer if implemented but don’t dissatisfied the customer if not implemented. Those functionality are often not demanded by the customer, but customers get delighted by having those functionality.
- Performance Functionality
Those are the functionality are proportional to implementation and satisfaction. More we implement more the satisfaction will be.
- Indifferent Functionality
These functionalities are nutral nor good or bad, implenting them or not implementing them does not satifiy or dissatisfy the customer.
Play the video below to watch details of Kano Analysis and how we can prioritize our backlog items using this technique.
MoSCoW is another method of prioritizing work items in Product development. The acronym derived from the first letter of its 4 prioritizing category (Must Have, Should Have, Could Have, Would like to have). This is another way of Affinity analysis by basketing the product backlog items in four categories.
As the name of the each category, team prioritize the Must have functionality first followed by Should have, Could have and would like to have, to get the return of benefit faster, reduce the lose of high importance functionality in case of time or budget constraint.
Play the video below to watch practical use of prioritizing backlog items in ALM tools like Rally and Jira.
Ranking items is another way of prioritizing backlog items in stack, A rank value (1,2,3,4,5…). With this method we organize our backlog items in stack, one above another. The Rank 1 considered as high priority than rank 2. In our backlog the higher ( low number value) rank or high priority appears above the relatively lower rank (high number value). We pick the top product backlog item first to groom, plan, construct etc followed by the lower rank.
Play the video below to watch practical demonstration of prioritizing product backlog item using Ranking method.