From my own experience, backlog prioritization and grooming can be a real can of worms. Dealing with different stakeholders, ensuring everyone's opinion is heard, bringing in customer feedback, figuring out how to introduce your customer data to make more data-driven decisions and many many more.
You might want to use some of the prioritization frameworks that are out there like ICE, RICE, WSJF or Value vs Effort and Priority Matrix.
These frameworks help you bring the system into your prioritization and help you look at the issue from different angles.
The idea is simple. You have a few metrics that you fill and these are then used to calculate the priority score. The challenge is with having to manage the metric values and the priority scoring in spreadsheets.
If you use Jira to manage work then you’d want to attach your prioritization attributes to your existing issues so you don’t have an overhead by managing backlog in multiple tools.
What it does
Because spreadsheets get lost and what is not in Jira doesn't count for many of us 😁 we created the Jira prioritization plugin that:
- gives you the freedom to choose the prioritization framework you want (ICE, RICE, WSJF, Value vs Effort)
- allows you to customize and create a new prioritization template with your own metrics and scoring formula
- has an interactive priority table where you can assign values for the metrics and score is calculated real-time
- creates Priority Matrix where you can faster spot quick wins
- has plenty of filters to help you get view you need
- shows score in issue detail and you can also adjust metrics from there
Foxly is making the prioritization process in Jira more systematic but fast.
How I built it
We built the app using our own Boilerplate for ACE: https://jexo.io/jira-confluence-app-boilerplate similar to our existing apps. The difference was that we wanted to use Jira APIs more and not have a mirror of the Jira issues and projects in our own data models and not have to keep this in sync using webhooks. So we decided to use entity properties to associate scoring values with issues and only store templates information in our database.
Challenges I ran into
- Working with Entity Properties is not as straight forward as first assessed, you cannot create complex query-able objects, if you need to be able to JQL by custom property you need simple, flat data.
- Had to consider workarounds for updating Issue At-Glance tab dynamic data (changeable scoring number). Changing the scoring formula would mean bulk updating entity properties for all the issues using that formula.
- For the central piece, the table view, Atlaskit Dynamic Table component was not a fit because 2 main limitations: 1. You can’t use inline edit component inside table cells; 2. You can’t add a footer with total values of rows in view.
Accomplishments that I'm proud of
Clearly structured the data patterns so that there’s no confusion what data is owned by the app database vs Jira.
What I learned
To work with features that haven’t used before like the entity properties and issue at-glance dynamic lozenge data
What's next for Foxly - Backlog Priority Scoring
We just published the app on the Marketplace and we’re planning to improve based on customers feedback.
One of the upcoming improvements is going to be using priority score to change the issue rank so users can quicker organize their backlog.
We’re also going to make Priority score available for JQL so users can filter the issues by this field but also show the priority score on their kanban tiles.