There two different times that we need to prioritize work and we should be using completely different approaches to that prioritization, for each stage.

  • The first is prior to the work starting, when we’re deciding what we want to work on. What problem are we trying to solve?
  • The second is after the work has started, when we are actually implementing whatever solution was determined to solve the problem.

Note that when we are considering HOW we’re going to do the work, in most cases that work is already started.

That start point is often called the commitment point, as it’s here that we are making a firm commitment to actually do it. Prior to that, it was merely an option.

So how is prioritization different at each step?

Prioritization before starting

Prior to work starting, we need to prioritize by some form of business value. Perhaps we expect revenue to go up or expenses to go down. Perhaps we expect to sign up new customers or reduce customers leaving. Perhaps we’re lowering risk. The key is that there should be some anticipated business value from doing this thing.

Sometimes we prioritize this work by a sense of urgency, although if that urgency isn’t backed up by importance then we need to seriously question whether this is the right thing to work on. See the Eisenhower matrix for more on that.

Sometimes we also prioritize by size, putting something in just because it’s small, and not because it’s valuable. This should be strongly discouraged. The time that we spend working on that thing, no matter how small it is, is time taken away from something that’s actually valuable.

Prioritization after starting

Once we’ve started the work, our prioritization scheme changes. Now we want to prioritize by a defined policy, not by business value.

In general, the best policy is purely by age. The item that was started first should be the one that gets the most attention, because we want it to finish first. Then the one started after that. By definition, there can be no value to any item until its finished and the oldest items are closer to finishing so they should be the priority.

Having said that, sometimes there are situations where some items really are more or less important than others and at this point we’re talking about classes of service, which are an explicit part of our policies.

The most common class of service, in my experience, is expedited. Expedited work is more important than standard work and should be done first.

Consider an ambulance with its lights and sirens on, that is driving down the street. This ambulance is expedited and all other cars are required by law to pull over the side to let it through. This is great for the ambulance as it gets to its destination faster, but is bad for every other car on the road as they are now slower and we’ve made it more difficult to forecast when they’ll arrive.

Now imagine if every third car was an ambulance. Would anyone except ambulances get to their destination? They would not, and this is the problem with having classes of service. Some work will benefit, and other work will suffer, and the overall system becomes less predictable.

So while we recognize that expedited work is occasionally required, it should be minimized as much as possible.

The effect of high WIP on prioritization

We’ve talked about two different kinds of prioritization. First purely by business value and then by policy once it’s started. Done well, this will ensure that we are maximizing the value through the system.

Except it turns out that there’s another factor that affects our ability to deliver value, and that’s how many items we have in progress at once (WIP). It turns out that if we only work on one item at a time, the order in which we deliver value is an exact match to the business priority that we laid out up front. However, if we work on everything at the same time, then all of that business priority is thrown out the window and things get done purely based on size. Small items get finished before larger items, regardless of how important they might have been.

Skeptical about this claim? See this excellent Drunk Agile Podcast that goes through the proof.

The point is that the more work we have in progress at once, the less impact our business prioritization has. If we want things to be delivered in an order that actually matters, we need to keep WIP as low as we can.

Wrap up

Development is very expensive, and we want to ensure that we’re getting the most value we can for that investment in time and money. Effective prioritization is the key to maximizing that value.