Having too much Work in Process, also known as Work in Progress (WIP), is a remarkably common issue. In my experience, management often encourages this behavior. I don’t know if it is the notion that we will get more done if we work on more things simultaneously. Or perhaps there is a fear we won’t get enough things done unless we work on several of them at once.
But what happens when we try to work on a few stories each? Remarkably, we make progress on several, but complete precious few. The more work in flow, the more context switching we all need to make. Coordination of the stories complicates testing and migrations. We look busy, but at the end of the iteration, we’ve fewer things complete. Then, at the beginning of the next iteration, a glut of work moves to done, setting us up with a couple day delay wrapping up the prior iteration and pushing us into yet another complicated cycle.
Drive each card to completion before picking up the next one. If a card is blocked, make getting it un-blocked a priority rather than letting it wait three days because George on the DBA team has a three-day SLA.
Even when we break our work down into small chunks, we have a certain cognitive load that comes with the work. — There’s the purpose of the work: What is it for? Why do we need it now? — There’s the requirements of the work: What is this supposed to look like? How is it supposed to behave? — There’s the context of the work: What systems does this rely on? What systems do or will rely on it? Who is the customer? — There’s the history of the work: Who has already worked on this? What got us to this point?
That’s but a subset of the things we need to know about a work item when we pick it up. Each time we pick it up. Every time we pick it up.
The more work items you are “actively” working on, the more times you have to dump the cache of a prior work item and load the details of the current into your limited immediate recall. Even if you know the system well, there is a tax incurred. This tax is what we refer to as a context switch and it is pretty expensive.
Even for tasks that we are familiar with, there is a context switch when moving from one to the other. The more complex the tasks, the greater the cost. The cost of these switches can be significant; 20% per additional task on average with some studies showing as high as 40% per additional task.
Now some of you will argue that this cannot be true. If a context switch cost 20%, then a human could never work on more than five items at a time because they’d be 100% utilized, right?
Not exactly.
This isn’t a utilization cost, it is a throughput cost. For every additional item you work on, you extend the duration of each item by 20%. So if you’re working on 2 items, each of which would have taken 2 days, for a total of 4 days work, you will now complete the same work in 4.8 days. You effectively lost an entire day by attempting to work on 2 items in order to get things done “faster”.
For every additional item you work on, you extend the duration of each item by 20%
Also be aware that the cost is compounded. 2 items is a 20% increase in the duration for both items. Add a third item and you increase the duration of all items by an additional 20% on top of the original 20%. So 3 items that normally take 2 days each wouldn’t take 6 days, or even 7.2 days, but would take 8.16. 5 items at two days effort each would require not 10 days to complete, but would require 17.03 days.
Let’s take a look at a formula that we can use as a simple model. Assuming each task has the same duration were it executed singularly, we can use a basic future value calculation for an investment.
d*(1+i)^(t-1)+d*(((1+i)^(t-1)-1)/i)*(1+i)
Where:
d = Duration of Tasks
i= Rate of increase as a decimal
t= Count of tasks
Using this formula, we can see how I came up with 17.03 days.
2*(1+.2)^(5-1)+2*(((1+.2)^(5-1)-1)/.2)*(1+.2)
2*1.2^4+2*((1.2^4-1)/.2)*1.2
2*2.0736+2*((2.0736-1)/.2)*1.2
4.1472+2*(1.0736/.2)*1.2
4.1472+2*5.368*1.2
4.1472+12.8832
17.0304
So, yes, you can have 7 or 8 items in flight all at once and be super busy. Just know that you are also incredibly less efficient and likely less effective.
Previously published at https://docondev.com/blog/2020/3/5/why-manage-wip