by Leon Rosenshein

Don't Always Minimize WIP

One of the questions I often ask during interviews is some variation of "If you take this job, what will your current (or last if appropriate) manager not miss about you?" Once we get past them realizing I'm looking for something their manager doesn't like and that this is partly about self-awareness and honesty they often ask for an example. So what I tell them is that my manager is a big proponent of minimizing WIP, and I'm usually working on multiple projects at once.

Over time we've come to an understanding. In general, I agree with him. When I'm fixing a bug or implementing a feature, I'm only working on that one bug/feature. If the feature has some clear deliverables along the way I structure the work so that they become available in order and start adding value instead of a big-bang reveal at the end. Small, bite-sized work, and finish one bite before moving on to the next.

The place where he gets annoyed and I'm working on multiple projects at once is somewhat different. It's at a higher/broader scope. At this point in my career I'm more interested in breadth than depth, and I do a lot of cross group/cross team/cross org work. And that work has longer timelines, lots of communication delays, and times when I'm waiting for other work to be done. 

To put it in programming terms, I've got multiple threads in the table, and many of them are blocked on IO. When it's time to switch to a new thread I look at what work is available, make a priority decision, do the context switch, and start working on the new thread. And of course, there are the non-maskable interrupts that need to get handled as they occur (unbreak now, pages, customer issues, etc). Just like your typical OS.

The big difference though is that, outside of NMIs, I decide when it's time to switch. It's not based on the clock or automatic if another thread becomes unblocked. That way I get to focus on what I'm doing and not spend too much time dealing with interrupts and context switches.

So, at one timescale I do minimize WIP, but at a large scale I maximize throughput and value-add, which is not quite the same thing