How do I help teams prioritize work with WSJF?
Sometimes teams deliver a large quantity of work, but a closer look lets you know they still have not met the customer’s needs. Teams are sometimes trapped in a false assumption that they must sequence work without considering the value of the work they are doing. This often results in extended periods without any genuine delivery of value. There is a better way. Weighted Shortest Job First (WSJF), modeled by Don Reinertsen, is a lean prioritization method that ensures that we work on the right thing at the right time. It prioritizes work that can be done the fastest (cost to implement) and has the highest cost of delay. Ultimately, it can help teams understand how to choose which work will deliver the highest value to the customer.
Definitions
The Weighted Shortest Job First (WSJF) is the Cost of Delay divided by the Job Duration. The higher the WSJF ratio, the higher the priority. Let’s explain these terms before we do a WSJF exercise. Cost of Delay (CoD) is the sum of three components:
User-business value: What does the user (customer) want? Is there a potential consequence of delaying this work?
Time criticality: Is there a set deadline or dependency that cannot be moved? Will value diminish if we wait?
Risk reduction-opportunity enablement: Could we capitalize on an important opportunity if we completed this work sooner? Will we lose an opportunity window if we delay? Could we mitigate a risk by completing this work sooner or could we incur a risk we weren’t expecting?
Cost of delay = User-business value + Time criticality + Risk reduction-opportunity enablement
Job size is a good proxy for job duration in most cases so let’s start there. If two features are the same size, but one feature has many dependencies, you may choose to delay working on the feature with more dependencies. A feature constrained by too many dependencies may not be completed within the timebox, thereby raising the level of risk associated with it. Delivery is more reliable when some of the dependencies are resolved before committing to working on it. If you can swarm on a feature (have multiple team members concurrently completing a feature’s stories), then the duration may be reduced as more than one team member will be working the feature in parallel.
Exercise
The goal behind this exercise is to determine the feature (job) that can be completed in the shortest amount of time with the highest associated value to the customer. You can accomplish this by first calculating the Cost of Delay (CoD).
Calculate Cost of Delay
To calculate CoD you will need to add the values for three figures:
User-business value (BV)
Time criticality (TC)
Risk reduction-opportunity enablement (RR/OE)
To begin, assign a “1” to the smallest value in each list. For example, review your list of features and decide which has the lowest business value and assign it a “1.” Once you have decided which feature is the “1”, assign a higher value to the feature with a BV higher than the first feature. A helpful tip is to use the Fibonacci sequence (1, 2, 3, 5, 8, 13, 21, 34, etc.) to keep the focus on relative sizing as opposed to sequence/order. Finish assigning relative sizes to all the features on your list. There can be only one “1” per BV, TC, RR/OE column.
Next, do the same exercise in the TC column. Ask yourself which feature is the least time-critical and assign it a “1.” This is the feature that can wait in the backlog for long periods of time with no impact to the business. Apply relative sizing to the other features in the list, always assigning numbers higher than a “1.”
Then move on to the RR/OE column. Here you want to ask which feature would enable a major opportunity for us? Or which feature would mitigate a major risk if we completed it sooner? Do not assign this feature a “1” because this feature provides a higher level of value to your organization. Instead, find the feature that does neither of these things and assign a “1” to it. Apply relative sizing to the rest of the features. For example, if the opportunity enabled by one feature is 10 times the opportunity of the feature assigned a “1” you may want to consider applying an “8.”
Finally, you are ready to calculate your CoD. Do so by adding the three figures together: BV + TC + RR/OE = CoD.
Calculate Job Duration
Once you have your CoD, you’ll need to divide it by job duration in order to arrive at your ultimate figure, WSJF. First, review your list of features and determine which one could be completed in the shortest amount of time. You will not always know the amount of time it will take to complete a feature, but the trick here is not to get trapped in the myth that these estimates must be highly accurate. In fact, one of the benefits of using WSJF is because it can help you prioritize work faster without the huge effort to gather exact figures. Instead, think in days, weeks, or months and whether the job size is “bigger” or “smaller.” For example:
Feature A can be completed in 5 weeks (by the same amount of resources) so the job size is bigger.
Feature B can be completed in 3 days (by the same amount of resources) so the job size is smaller.
Assign the “1” to feature B because it is the smallest job. Then apply relative sizing to the rest of the features in the list. Remember if a job is five times bigger than the feature assigned a “1”, give it a “5.”
The Ultimate Figure, WSJF
If your team is new to WSJF, begin with an initial longer WSJF working session attended by the Scrum Master, Release Train Engineer, Product Manager, and Product Owner. Talk through each feature in the backlog. The goal is not a static WSJF score but something you can improve on as it is revised over time. Once the backlog has WSJF calculated, a regular cadenced working session by the Product Manager and Product Owner will revise WSJF in the backlog as the CoD factors or duration changes. If you keep up this maintenance routine, you should always have a ready, prioritized list of work that will keep your teams focused on delivering high-value work that keeps your customers satisfied.