WIP, Throughput, and Little’s Law
In a prior post, we talked about why we should manage WIP. We showed that we can use a future value calculation to give us an idea of how long it will take to complete multiple items.
While our future value calculation is both informative and interesting, it is not particularly useful beyond making the point that doing more at once takes more time. What we want to know is how does this materially impact our ability to make software. For that, we can look to a more simple (and useful) calculation based on Little’s Law
Little’s Law can be stated in a number of ways:
WIP = Throughput x Lead Time
WIP is the Work in Process. Lead Time is the time it takes for an item to get through the system. Throughput is the number of items a system can deliver in a given period of time.
So, let’s say we have 5 items in process at the moment. And we have a Lead Time of 4 days with a 100% probability.
WIP=5i
Throughput=T
LeadTime=4d
5i=Tx4d
T=5i/4d
T=1.25Items/Day
Based on the data we have about the system, we can assume these 5 items will take 4 days on average to clear the system. With this simple piece of information, we can project completion dates for any given item in the queue. Say, for example, there are still 5 items in WIP and we want to know about a story that is 10 items down in the backlog. That particular story, while not as high in value as the stories ahead of it has a due date 7 days from now. So while it is not as important, it is now more urgent.
Our target story is 15th in line when we include the items in process. 15i / 1.25i/d = 12d
Consequently, it is likely to be delivered in 12 days. We know that it is very likely going to be 5 days too late.
So let’s target our item for 7 days from now.
Ni/1.25i/d=7d
Ni=7d*1.25i/d
N=8.75
We can’t have something at a three-quarter point in a queue, so in order to get it done 7 days from now, we’d need it to be 8th in the queue, including the current work in process. So it will need to be 3rd in the backlog. We can now determine if this is both desirable and feasible. Do we want to bump other items to a later delivery date? Can we deliver this before other stories or is it dependent on some of them? If it is dependent on some of them, can we bump them to positions one and two in the backlog to make this happen?
What if we are comfortable with something less than a 100% probability? What if we are good with a probability that indicates usually, but not always?
Let’s say that 80% of our lead times are at or before 3 days. If we are comfortable with 80% probability, then we run the math again. Based on a lead time of 3 days, we determine that the throughput is 1.67 items per day and our item will be done in 9 days. At 80% probability, we’d need to move it to 11th in line, or 6th in the backlog. Remember, we always need to account for the work in process in addition to the work in queue.
And finally, if we want to use the mathematical average (or the mean), which is approximately 62% probability in our fictitious case (because I just said it was), then we have a lead time of 2 days, a throughput of 2.5 items per day, and our item should get done on the 6th day.
You’ll notice, at no point are we negotiating over how long a specific item will take. If we need to adjust our tolerance, we change our probability target and run the math again.
This article is an excerpt from the book, “Escape Velocity”, available on LeanPub, Amazon, and elsewhere.