What is Weighted Shortest Job First?
Weighted Shortest Job First is a model used by teams to prioritize the initiatives they need to take up. It is an agile backlog prioritization technique in the Scaled Agile Framework (SAFe).
The aim of this technique is to produce maximum economic benefit by completing tasks that take the least time and have the highest value first. Teams take into consideration the cost of delay and the job size/duration to calculate the WSJF. In fact, it can be considered as just the cost of delay divided by the job size. However, the actual calculation is much more complex. The team uses this tool to work on the most valuable tasks first.
In flow-based systems, continuous updation of priorities proves to be quite beneficial. As such, the Weighted Shortest Job First approach is handy for prioritizing backlog. This is done based on time, business value, risk and opportunities.
So we know what the WSJF approach is in brief. Let's get into details and understand all the stuff you know about it. We've explained how it came about and how you can calculate the WSJF below.
Origins
Earlier, around the 1970s, the 'Shortest Job First' approach was made use of. This was when resources were scarce and expensive. The goal was to make the best use of this in the most inexpensive way.
In the recent past, Don Reinertsen, a well known product author, spoke of the idea of WSJF in his work. This was to be a way to make the most out of the investments in software teams. He used two factors to determine how to prioritise the initiatives. These were the cost of delay and the duration.
As obvious, duration means how much time a task takes, or how short it is. How short a task is matters as it may hinder or delay the development of other tasks while being undertaken. This in turn leads to the cost of delay.
Thus, to calculate which job to get started with, Don proposed the WSJF. He suggested the metric to be the Cost of Delay divided by the Duration. However, based on the need, you could also find other forms of the WSJF model. Product teams use it to prioritize product backlog. Marketing teams can use it to calculate the highest RoI and risks. Technical risks and stakeholder influences can also be calculated using the Weighted Shortest Job First. Since most companies would worry about the economic returns, the cost of delay is used.
How to prioritize backlog using Weighted Shortest Job First?
As already stated, WSJF = Cost of delay/Job Duration.
But, obtaining the cost of delay is a bit more complex than this. Let's see how it's done.
Calculating the Cost of Delay
The Scaled Agile Framework considers the features, capabilities and epics that are part of the backlog as tasks. However, determining tasks which aren't yet worked on is tough, hence there's a better way of going about it. The training company, Scaled Agile, considers three components under the Cost of Delay. These are:
1. Value to the business/user - The relative value to the customer as well as the company. The customer's preference and revenue impact are all considered here.
2. Time criticality - This considers any fixed deadlines and milestones. Also, the decay in value over time factors in here.
3. Risk reduction and/or opportunity enablement - The other implications of the task on the business. Apart from this, the impact that the information has on future opportunities is taken into consideration.
The team creates a scale for each component and sums up the values. Various methods such as the Fibonacci estimation are used for this purpose. The team decides this based on what’s best for the project.
Thus, Cost of Delay = Business Value + Time Criticality + Risk Reduction/Opportunity enablement.
Calculating the job duration
Calculation of Job Duration is also not the easiest. This is because the resources, skill set, dependencies can vary and some jobs take more time than others. So, the team should agree on a scale and determine the value attributed to each task. Automatically, the ones which have a lower duration would be the ones you do first.
Putting it together to get the WSJF
Now that we have the requisite data, all that's left is to calculate the Weighted Shortest Job First. This is then used to prioritize tasks.
So, take for example the below set of tasks shown in the table.
Task | Cost of Delay | Job Duration | WSJF |
1 | 10 | 2 | 5 |
2 | 6 | 4 | 1.5 |
3 | 8 | 3 | 2.67 |
The first task has a Cost of Delay = 10.
Also, the duration of the same task is 2.
Thus, the WSJF score would be = 10/2 = 5.
Similarly, the second task has a Cost of Delay = 6
Job duration for the same = 4.
Then, the WSJF score for this task = 1.5
In the same manner, for the last task:
Cost of Delay = 8
Job Duration = 3
WSJF score is calculated to be = 2.67
Using these three values, the tasks would be prioritized in the following order: 1st, 3rd and 2nd.
So as seen, the initiatives that have a higher Cost of Delay are given more priority. Same is the case with the ones having a shorter duration.