Introduction to WSJF
The Weighted Shortest Job First (WSJF) is a framework typically used by product teams to achieve a streamlined prioritisation process to determine the sequencing of work items, which when done in order, produce the maximum economic benefit.
With WSJF, work items (Features, Capabilities, Epics, Initiatives, Work Items, Units of work etc.) are individually evaluated and rated against a set of criteria such as cost of delay, job size and effort duration. The outcome of this analysis is a weighted numeric rating.
Equipped with this rating, work items can be allocated to the roadmap of works:
- in terms of the customer value theme prioritised for a development iteration (New billable capability, maintenance, technical debt) etc.
- by prioritising items with the highest WSJF ratings.
Where is the WSJF used?
The WSJF framework is often used to prioritise backlogs of work items in environments using SAFe such as software development and data science. In these environments work, items in the Backlog are continually re-evaluated based on new information that can have been gathered since the latest prioritisation iteration.
The output is an updated sequence of work items that balance relative user and business value, time, the effort needed, risk and opportunity enablement.
Who is WSJF for?
Any team in your organisation that is working to achieve a higher level of maturity in the sequencing of their activities can benefit from the WSJF approach.
Using examples:
- Support teams can use WSJF to prioritise which bugs are to be addressed before others.
- Marketing teams can use WSJF to prioritise initiatives that have the highest return on investment.
- Product teams can use WSJF to decide which capability items are to be built before others.
The WSJF Rating Formula
The formula to calculate the WSJF rating of a work item uses the following components:
Variable | Description |
Cost of Delay (COD) |
A monetary representation of the money that will be lost by delaying, or not doing the item of work within a period of time. |
Work Duration or Job Size (EFFORT_SIZE) |
A representation of effort needed to deliver the work item from start of work to shipping to the customer (Story Points, Days, Weeks, Months, Ranges) |
The outcome of the WSJF being calculated for each work item is an assignment of a value that is used to determine priority. The higher the WSJF of a work item, the higher its priority will be.
The WSJF Formula prioritises work items:
- Low complexity – High added value.
- Complex - High added value.
- Low complexity – Lower added value.
- Complex – Lower added value.
Calculating WSJF
Step 1: Calculate the Cost of Delay
Remember that the COD represents the financial implication of doing the work at a later date. It represents the total impact of deferring the work from starting and shipping to the customer.
This COD is calculated from the point in time of when the analysis is being made. This means you should include both the delay needed to start the work and the delay needed to ship the work.
The best-case scenario is when an item of work, has a clear representation of money opportunity associated with it. However, realistically speaking, it is not always easy to assign such a monetary value to the COD.
In these cases, you can use one or more proxy variables to achieve a fair numeric representation to use in the place of money for COD. To do this, assign a rating against the following parameters for the item of work being reviewed:
Variable | Description | Value Options |
RATING_VALUE | Value to the business and/or customer. Think of this in terms of both additional money you can make, and what money you can save that can be better allocated elsewhere. For e.g. By issuing a patch for a particular bug, your NPS increases, and the cost of support can be diverted towards new training initiatives. |
1 for Lowest value 5 for Low value 8 for Medium value 15 for High value 20 for Highest value |
RATING_TIME | Time criticality (assess this in terms of customer satisfaction, legal commitments, retention rates, revenues, cost of running the operation etc.) | 1 for Lowest 5 for Low 8 for Medium 15 for High 20 for Highest |
RATING_RETURN | Return in terms of risk reduced and/or opportunity enabled. | 1 for Lowest risk 5 for Low risk 8 for Medium risk 15 for High risk 20 for Highest risk |
Add up (or multiply) the resulting ratings to achieve your cost of delay i.e. COD = RATING_VALUE + RATING_TIME + RATING_RETURN
Step 2: Calculate the effort or duration needed to deliver the work
Just as tricky as calculating COD, it is also hard to estimate EFFORT reasonably without using expensive, antiquated and error-prone waterfall approaches.
For EFFORT, you can use the actual numeric effort needed in terms of Days, Weeks, Months, or use T-shirt sizing
- 1 for XS
- 5 for S
- 8 for M
- 15 for L
- 20 for XL
Step 3: For each work request calculate the WSJF value
Once all items are reviewed and have their WSJF rating calculated, you can sort the list from highest rating to lower rating.
The result of a WSJF operation should look something like this:
Giving you a WSJF Weighted sort priority of C > B > A > D
Repeat Regularly
The power of this structure is within its ability to be periodically revisited and updated with the latest updates and information known to you. Some items may become more critical to the company or market conditions, or new risks or legal requirements may be identified.
I recommend you schedule this work to be re-visited once monthly, and wherever possible, use tooling to support the consistent workings of your team, as well as the process of sharing information.
For this, you may want to check out tools like www.aha.io or www.versionone.com that are specifically designed to support Product teams.
NOTES:
- All work items need to be evaluated consistently and with the same units of measures. If you are using Fibonacci to represent EFFORT_SIZE, then that same scale needs to be used across all items.
- You will start noticing how your natural propensity will shift towards items that have a lower number EFFORT as it allows you to demonstrate value more easily. However, this value is not necessarily aligned to the efforts that return the highest economic return.
- Here is why the formula for WSJF takes into consideration the cost of delay, to balance out the economic return conditions (remember that WSJF = COD / EFFORT_SIZE).
- When items are abstract in definition (like epics), use the WSJF method to achieve an initial understanding of placement. Be ready to see items move when you unpack and explore the contents of an epic and start applying the WSJF to them.
- Prioritization requirements may differ depending on the circumstances such as the type of product, values of users/customers, business/technical risks etc. Therefore, you may refine the criteria or parameter values. The principle here is all about having a formula that is biased towards generating the maximum economic return.
Wrapping up
The WSJF framework is an effective tool allowing the teams to determine the prioritisation of work items in a backlog.
Sometimes the prioritisation of tasks is obvious and not open to discussion. Sometimes they are less so. It is in the latter circumstances that this framework shines, making it easier to obtain a classification that is cross-functionally aligned to achieve the highest impact and highest return.
Using the WSJF framework is easy and well structured. It allows for a transparent and collaborative environment and offers a solid base on which to align the cross-functional needs of your organisation.
It can also be used for both organisations that are operating in agile or DevOps-centric environments, as well as any other department that is trying to mature their way of showing a better-structured approach to decision making and alignment to business value.