Weighted Shortest Job First – WSJF

Weighted Shortest Job First is a technique for assigning a weight, or value, to each job, and then dividing that by the length of the job, in order to determine a relative priority.

What are the variables

In SAFe, WSJF is implemented using the following formula:

WSJF = (User-Business value + Time Criticality + (Risk Reduction (RR) + Opportunity Enablement (OE) value) ) / Job Size

While job size remains the same, the “weight” here is the sum of three variables, all on a scale from 1 to 20.

User/business value indicated the user preference of executing the project, and its revenue impact to the business. Higher value for business value indicated that this project will produce higher revenue or eliminate potential penalty if it is delayed.

Time criticality indicates the importance of executing the project now. If a project is highly time critical, then our competitors are working on it as well, and if we are not first to market, then the value we will capture will be limited. It is important to have a good understanding of the customer preference and whether they will move to another solution if project was not executed. Projects that are not time critical have a longer shelf life.

Risk reduction and opportunity enablement indicate the project either positions the company to make follow-on projects or mitigates risk. Moving to the cloud, for example, might not generate revenue directly, but it might reduce data center failure risk while making future work faster. It might also open up a new business opportunities for the company.

WSJF will help companies decide which project to approve and which feature to work on and assign resources to get the work done. It requires good understanding of relative estimation for all 4 variables in the calculation.

How does it work

To calculate the WSJF for a portfolio, responsible people shall be knowledgeable about relative estimation, and the Fibonacci number. The calculation works as follow:

  1. Compile a table of all features/Epic that need to be prioritized. The table shall include:
    1. Epic/Feature name
    2. User-Business value
    3. Time criticality
    4. Risk reduction-opportunity enablement value
    5. Cost of Delay (a calculated field of added field 2,3, and 4)
    6. Job Size
    7. WSJF (a calculated field of cost of delay/Job size)
  2. Starting with one column at a time, pick the smallest feature for user-Business Value and assign it a 1
  3. Pick the smallest feature for Time Criticality and assign it a 1
  4. Pick the smallest feature for Risk Reduction and assign it a 1
  5. Pick the smallest feature for Job Size and assign it a 1
  6. There must be at least a 1 in each column
  7. Going over each Epic/feature the team will assign a value in each column relative to the feature with value of 1 in that column.
  8. Once completed, calculate the cost of delay and WSJF

NOTE: Epic/Features with the highest WSJF has the highest priority and should be considered first.

WSJF big caveat

WSJF prioritization makes the following assumption:

  1. WSJF assumes that the critical resources on these projects are the same, and they are all busy on each project for the entire duration of that project.
  2. WSJF does not take under consideration small job with multiple dependencies and may take longer than a bigger item.
  3. WSJF does not take under consideration specialized resources like DBA, system Administrator, and others. With WSJF, those resources will be assigned to the highest priority projects depriving lowest priorities project from moving forward.

What do you think?

Have you used WSJF in your organization? Has it been helpful? did you have any issue or constraints? how was your experience? If so, then please share your thoughts in the comments below.