Prioritization of User Stories in UMed
Background
As a software engineer, I did not have to think much on prioritization as backlog is always prioritized by PM. We, software engineers, just put user story points to each user story to tweak the order to make sense on each sprint. But now, in UMed Inc, we have to think more on prioritization. Since I did not know how to do this well, I read number of articles and talked to colleagues to come up with process. This is is just a first draft of process we came up with and still experimenting.
Proposal
Main idea on prioritization is put numbers to each criteria and add or subtract these criteria to come up with total prioritization number. Higher the number, the more important to work on.
Size
We decided to use T-shirt size, S, M, L, and XL.
Attributes
We came up with following attributes.
- Population
- Impact
- Frequency
- User Story Points
Population
Population is ratio of people who are impacted by the user story. For example, we provide online medication with nurse visits for blood test. Only 1/3 of appointments for diabetic patients are nurse visits That means, population for user story related to “nurse visit” is “M”.
Impact
Impact is how badly users want this feature. This is probably the most non-objective attribute.
Frequency
Frequency is how often the users encounter this. For example, changing password is not as frequent as booking an appointment in our app. And thus changing password might be “S” or “M” for frequency.
User Story Points
This is typical user story points from engineers. Of course, this is not measured by time but complexity of user stories. This cannot be based on time because some people from our engineering team work part time and time spends vary from people to people. We discuss during sprint estimation meeting to come up with T-Shirt size. If discussion gets too long or no where, we put larger numbers and re-discuss to break down user stories.
Formula
Convert T-Shirt Size into numbers by fibonacci sequence. Reason fibonacci sequence is used is we want to put more weight on larger size.
S = 1
M=2
L = 3
XL = 5
Total = Population + Impact + Frequency − 3 x User Story Points
If you are using Notion, following formula can be used to get total value
((prop("Population") == "S") ? "1" : ((prop("Population") == "M") ? "2" : ((prop("Population") == "L") ? "3" : "5"))) + ((prop("1/T") == "S") ? "1" : ((prop("1/T") == "M") ? "2" : ((prop("1/T") == "L") ? "3" : "5"))) - ((prop("User Story") == "S") ? "3" : ((prop("User Story") == "M") ? "6" : ((prop("User Story") == "L") ? "9" : "15"))) + ((prop("Impact") == "S") ? "1" : ((prop("Impact") == "M") ? "2" : ((prop("Impact") == "L") ? "3" : "5")))