Weighted Shortest Job First
Definition
Weighted Shortest Job First (WSJF) is a prioritization model used to sequence work for maximum economic benefit. In SAFe, WSJF is estimated as the relative cost of delay divided by the relative job duration.
Source: Scaled Agile Framework (SAFe)
Contents
Weighted Shortest Job First (WSJF) – A Key Lean Prioritization Tool
Weighted Shortest Job First (WSJF) is a key tool or algorithm to prioritize backlogs by continuously evaluating the jobs by considering the relative user & business value, time criticality, risk reduction and/or opportunity enablement, and job size. WSJF adheres to the fundamental principle of Lean economics by conveniently and automatically disregarding sunk costs.
For better economic returns, priorities must be evaluated incessantly. Always job sequencing results the better outcomes rather than just ranking the jobs based on a hypothetical ROI.
In the book The Principles of Product Development Flow: Second Generation Lean Product Development, Donald G. Reinertsen describes a model (WSJF) for prioritizing jobs based on the Cost of Delay.
What is CoD (Cost of Delay)?
CoD is the monetary value lost by postponing or not performing a job for a specific time which measures the economic value of a job over time.
Jobs deliver the best economic return if they bring the most value in the shortest time.
In Scaled Agile Framework, jobs are categorized into Features, Capabilities and Epics in their respective backlogs.
In the context of SAFe, the WSJF model wires the economic principles of Lean product development flow by:
- Performing an economic assessment
- Disregarding sunk costs
- Making monetary choices incessantly
- Considering decision rules to decentralize decision-making and control
- At least quantify the Cost of Delay if you cannot quantify any other factors.
Understanding Reinertsen’s WSJF modelling
A company is evaluating which of the A, B and C jobs to pick first in getting best economic outcome for it’s business.
Job A
Given, Duration = 1; CoD = 10; => WSJF = CoD/Job Duration = 10/1 = 10
Job B
Given, Duration = 3; CoD = 3; => WSJF = CoD/Job Duration = 3/3 = 1
Job C
Given, Duration = 10; CoD = 1; => WSJF = CoD/Job Duration = 1/10 = 0.1
Let us analyze what is the total cost of delay if the company picks the job order based on Low WSJF First.
If you consider Low WSJF First approach, the order of performing the jobs would be C, B and A in sequence that means jobs B & A need to wait till C is finished and job A need to wait till C and B are finished.
Cost of delay for job C will be 0 as it’s the first job to start. For job B to start, it need to wait for 10 durations of job C and it CoD per unit of duration is 3 which accumulates a total of 30 units of total CoD. For job A to start, it need to wait for 10 durations of job C plus 3 durations of job B and it CoD per unit of duration is 10 which accumulates a total of 130 units of total CoD.
Total CoD = 130 units for job A + 30 units of job B = 160 units
Total CoD for the company in the Low WSJF First approach
Let us analyze what is the total cost of delay if the company picks the job order based on High WSJF First.
If you consider High WSJF First approach, the order of performing the jobs would be A, B and C in sequence that means jobs B & C need to wait till A is finished and job C need to wait till A and B are finished.
Cost of delay for job A will be 0 as it’s the first job to start. For job B to start, it need to wait for 1 duration of job A and it CoD per unit of duration is 3 which accumulates a total of 3 units of total CoD. For job C to start, it need to wait for 1 duration of job A plus 3 durations of job B and it CoD per unit of duration is 1 which accumulates a total of 4 units of total CoD.
Total CoD = 4 units for job C + 3 units of job B = 7 units
Total CoD for the company in the High WSJF First approach
As the above calculations show, choosing the next best job can have a dramatic economic impact for a company.
If effort and CoDs are different, do the WSJF!
Appraising the CoD
Estimating the Cost of Delay is crucial in the calculation of WSJF. In practice, determining the absolute financial value per unit of time is extremely difficult and it’s not a one man activity but a collective effort of all the stakeholders.
Arriving at a best estimate of the absolute value of CoD is hard and not realistic – so we always calculate the CoD as a relative value w.r.t. the jobs or tasks at hand (Do you remember Einstein’s Theory of relativity? That might get handy in appraising the CoD – just kidding, it not that complex though 🙂 ).
Cost of Delay can be derived based on three main components:
- Customer-Business Value
- Time Critically
- Risk Reduction and/or Opportunity Enablement
Customer-Business Value
We need to estimate the relative value to the customer or business by picking the next job
During estimation the business value for a job – all the stakeholders should consider the complete set of jobs available and assign a relative value to each job. You make ask yourselves some of the following questions.
- What is the customer preference while selecting a job over the other? Assign a relative weight (a number) based on this.
- Is there any revenue impact on the business? Do not always blindly select the job with a higher revenue impact, you need to consider various factor while assigning the right relative weight.
- Is there a potential penalty or other negative effects if we delay a job over the other? Evaluate the dependency chain, resources availability, and any other factors which might adversely effects the sequencing the the jobs to assign right relative weights.
Time Criticality
Evaluate if there is a decay of customer/business value over time?
While evaluating the time criticality of sequencing the jobs you need to consider deadlines, customer wait threshold and customer satisfaction. Some of the questions you may encounter during this process are as follows:
- Are there any fixed deadlines? Consider the deadlines for the jobs and make sure you sequence them to meet the deadlines without slipping.
- Will the Customer wait for our solution or move to other solution available in the market? Be sure you evaluate the Customer’s wait threshold and sequence the job or jobs which deliver that solution within the estimated threshold otherwise you will be at a risk of losing your customer. If you are in question, make sure you talk to the Product owner or Solution owner or Customer directly.
- What is the current effect on Customer satisfaction? In today’s fast pacing business, always uphold the customer satisfaction at the highest level possible. As dissatisfied customer will never return to you and also lead to a negative WOM (Word-Of-Mouth) at your business interests.
Appraising the Job Duration
Determining the job duration will be challenging especially in the early days as the available capacity and duration of each job is unknown. The ideal approach is to use job size as a good proxy for duration while calculating WSJF to compare jobs.
A Note on Using Job Size as a Proxy for Duration
Considering job size is only an approximation and should very cautious as it’s not a perfect indicator of job duration. Some exceptional scenarios you may consider while proxying job size to job duration are as below:
- A small job which require a speciality expertise might take longer than a bigger job due to resource scarcity.
- A large job with a high business value can be delivered more quickly than expected if specialty skills are readily available which yields more value in a shorter period.
In most circumstances, WSJF relative estimating is adequate (proxying job size) but rarely we need to worry about the above scenarios.
Calculating WSJF
Let us consider an hypothetical example to understand the calculation of WSJF and picking the next best job to be performed.
Larger values assigned to user stories during estimation reflects higher uncertainty.
- Step 1 – Start by accessing the CoD parameters – Customer-Business Value, Time Criticality and Risk Reduction and/or Opportunity Enablement – one at a time. Always set the smallest item to 1 and then determine estimates for other items in the selected parameter in relative to the smallest item identified.
- Step 2 – Once estimating all the 3 parameters of CoD, now it’s time to estimate the job duration. As we usually use job size as a proxy for the job duration assign weights using the technique followed in the step 1 by assigning 1 to the smallest job size.
- Step 3 – Calculate the CoD per item by adding individually calculated parameters for each job
- Step 4 – Calculate WSJF by dividing the CoD with job duration calculated in Step 2.
NOTE: It is important to ensure that each column contains a ‘1’ representing the smallest element to normalize the parameters to each other. Also, use the subset of the modified Fibonacci sequence while assigning the values to the items.
Applicability of WSJF
WSJF is a just a tool to frequently reprioritize jobs in flow-based systems to realize optimal economic value. It logically assists stakeholders in decision making to pick the next best job to perform.
Features are the key economic driver for trains (both at Agile Release and Solution level). So, it’s imperative that reprioritizing the features incessantly is the best ROI a team can realize.
A typical ART backlog will have 100+ features but at any given point in time not many features can be worked on simultaneously. In order to properly prioritize the jobs from the backlog, maintaining a rolling WSJF estimates over time are very useful. Also, a collaborative effort from all the stakeholders (Product Management, Architects, Business Owners, affected teams, and others) to reprioritize ART feature is critical to ART performance.
WSJF is key in prioritizing features and capabilities in ART and Solution Train backlogs.
Let’s please consider some exceptional scenarios as well.
- Team backlog prioritization – Typically, multiple job will be parallelly worked at the team level and the prioritization should have already decided and need to be completed with the iteration, so reevaluation the priorities which are local to team is not worth.
- Portfolio Epic prioritization – During early stages it worth prioritizing the items in the portfolio backlog based on WSJF, but continuously prioritizing the items only based on ONLY WSJF is not ideal as we need to consider the substantial investments in the estimates along with the value or potential monetary returns and better-informed assumption on the likely duration.
Comments
Good stuff!!! Keep going!