Tuesday, March 7, 2017

Kanban and the Post Office

This is a translated and modified version of my article "Wie bei Kanban die Post abgeht", which was published online at Projektmagazin in February 2015. If you prefer German, you can find the original German article here.

Once I was with a company, that had freshly started using Kanban. Peter, the CEO was happy with what they already had achieved and proudly presented their board to me. Indeed I was impressed with how far they had come in such a short time without having much external expert support! The board roughly looked like this:

Sipping our coffee, we had a chat about Kanban in general and their board in particular. After a while I asked about the problem with queues in the post office. My conversation partner looked in me in disbelief, so I started from the beginning.

"When I was a kid", I said "every post office was organized in a way that each counter had its own queue. If you had a package to ship, you had to decide for one of the queues and line up - of course it always was the wrong choice, because it turned out that all other queues were serviced much faster. Today, post offices are organized differently. Usually, you‘ll only find one central queue for all counters. Only shortly before its your turn, you‘ll be directed to the next available clerk. Why is this? This system offers at least three major advantages:
  1. Predictability improves significantly. In the old system, it happened quite frequently that I had lined up in a specific queue only to discover later, that the person in fron of me had a very complicated issue he wanted to discuss with the clerk. Bad luck! The same thing happened, if my queue was served by a trainee, who (of course) was way slower than his/her colleagues. Certainly these things happen in the new system, as well. But here trainees and complicated requests have different ramifications, because the delays are split amongst all the customers, so to say. This is called "using pooling to buffer variability". Needless to say that this improved predictability and unified wait times lead to higher customer satisfaction.
  2. The new system is way more reliable. Imagine one of the clerks needs to leave his/her counter, because he/she is needed elsewhere. In the old system, this had caused severe disturbance, because the queue now had to be distributed amongst the other queues. But by what mechanism? Should the customers just line up at all the other queues? And wouldn‘t that be unfair, because they had already waited in the disintegrated queue? In the new system, it‘s still annoying, when a counter is being closed. But the impact for the overall system is rather low. Nobody has to be redirected. The wait time for all customers gets a little bit longer, but nobody feels treated unfairly, because the additional wait time will be evenly distributed amongst all customers.
  3. The new system is less stressful for the clerks. In the old system, every clerk had to serve each of his/her customers, before he/she could close the counter and leave work. Everyone had "own" customers and should have felt responsible for them individually. In the new system, all the clerks work as a team and share responsibility for all the customers. If someone is having a rough day (or difficult customers), his/her team mates will compensate for this automatically."

Keeping an eye on the queue as a whole

During my little monolog, Peter had been nodding a lot, so ha seemed to agree with all this. After I had finished, he directed his gaze to the board again and started thinking out loud: 
"In our context, the tickets on our board are the customers in the post office, each with different requests. Our team members are the clerks, who deal with the requests. A finished ticket is the equivalent of a served customer (hopefully a happy one!) At the moment we assign people to tickets right from the beginning, everyone has his/her own queue and is responsible for dealing with it. This means we are working in the old post office system. When I think about it, I have witnessed all the disadvantages you have just described. So for us, too, one joint queue should be a much better solution. But for this our board had to look differently."
He grabbed a marker, went to a nearby flip chart and started to sketch a modified version of the board. 

For the columns "To Do", "Next" and "Done", the swim lanes had disappeared. They now only existed for the activity columns "Dev", "Test" and "Deploy". It seemed like a small change, but I think it was a big step in the right direction towards more flexibility, collaboration and knowledge sharing. 

Holes in the input queue

I then nudged Peter a little bit more and asked: "What about holes in the "Next" column?" Again, he seemed to be puzzled, so I elaborated: "I guess, that the tickets in the "Next" column are prioritized by some sort of mechanism that makes sure the tickets with the highest value (or best value-cost-ratio) are on top of the queue and the less valuable ones are at the bottom, right?" Peter nodded, so I went on: "Now what happens when, let‘s say Stefan is done developing a ticket and wants to pull the next one from the "Next" column? Of course, he should pull the one at the top of the queue." 
I grabbed a marker and wrote "1" on the top ticket, "2" on the next one and so on. "Unfortunately, I am pretty sure that in many cases that will not happen. And the cause for this is specialization. That‘s probably the reason why you have the swim lanes in the first place. So if ticket 1 requires a specific skill, which Stefan does not master, he will leave the ticket where it is and pull ticket 2 instead. Now after a while Inken wants to pull a new ticket. But again, she‘s lacking the required skill for ticket 1. She doesn‘t feel comfortable pulling ticket 3, either, so she pulls ticket 4. Does this scenario sound realistic?" 
Peter nodded his head thoughtfully. He knew where I was getting at and changed his sketch of the board again. At this point it looked like this:

Before I could go on, Peter started speaking, and he said the exact same thing I was about to say: "This is a disaster! From a business perspective, these "holes" are an absolut no-go, because they mean we are delaying the most important tasks/projects, while we are working on less important ones. We cannot have this!" 
While he paused, I explained, what I had seen many times before: "Yes, I agree. But here comes the catch: If you want to make sure the most important tickets are always being worked on, the company has to invest in this new way of working. And depending on the degree of specialization, the technology you use, your code base etc. it might be a quite high investment. The board helps, because if designed appropriately, it will show you how far you‘ve come at any time. But of course, the sole visualization will not be enough. You will probably have to train your staff and collaboratively develop policies that make sure you gradually improve."
"Of course, I understand", Peter said (and he looked a little bit depressed). "I will start working on this tomorrow. Do you have any other advice on how the board can support us in this effort?" 

Some more ideas for improvement

I paused for a moment and thought about this. Then I replied: "In my experience it‘s mostly unfavorable to have swim lanes (or columns for that matter) named after specific people, because it tends to perpetuate the current division of work. It might be a good idea to have the specialization written at your swim lanes instead. The specialization might be a technology, a project, a product etc. And if you decide to do so, it might be a good idea to have avatars for each team member to indicate who‘s working on which item. The advantage of avatars compared to swim lanes is that they are more fluid. It‘s easier to move avatars from one item to another. And probably even more important in your case: you can easily have two or even three avatars on the same ticket. And that‘s exactly what you want: several people working on the same task, so that the specialist knowledge can spread." 
Again, Peter started to change the layout of the board, and now it looked like this:

I finished my thoughts by throwing a couple of more ideas at Peter: "In order to make more explicit, what you want to achieve, you could introduce a policy that goes like this: In every column there have to be at least two different avatars at any time. You could easily track your improvements by counting the number of tickets on which two or more people have collaborated. It might also make sense to limit the number of avatars per person, to encourage collaboration across specializations...But I feel we get carried away. So before going any further, I think you should gather your team and explain to them what you want to achieve and why. I am sure they have plenty of ideas how to get there themselves!"


One of the biggest benefits of Kanban is that it focuses on queues. Through the board we can gain visibility of the queues. And by limiting work in progress, we actively manage queues and thereby improve flow. Managing queues is a powerful, yet relatively simple way to decrease lead time dramatically. Of course the board can only show us improvement opportunities, if we are willing to look at them and if we know where to look. So the board should be designed in a way that it shows queues immediately. Ideally, this visualization is accompanied by metrics, which show the impact of (often growing) queues over time. 
In my experience it‘s always a good idea to have a closer look at the division of queues and ask questions like: How many different queues do we see? Why are they separated? What would be the advantages and disadvantages of merging several queues into one major one? How high would the investment be? 
I am not saying it‘s always a good idea to have one common queue (the modern post office system). It‘s mainly a tradeoff decision, which should be answered considering different factors like risk, short-term costs, customer and employee satisfaction etc. In fact, many post offices still do have a separate queue for banking issues. This probably makes sense, because it would be very costly to train every clerk in banking tasks.
Another interesting point is to look at this problem at different levels. In this post I‘ve discussed the issue of having individual specialists, whose work is divided by separate queues. Merging these queues might cause more collaboration and spreading knowledge. The same logic applies at a team or even department level. For instance, in product development it‘s worth asking: Do our development teams work on separate queues or do they pull items from a common queue? And again: What are the advantages and disadvantages? What would it take to change this? At which cost? And then at an even higher level: How do the queues look like for our departments and business units? Would it make sense to have a common queue here, as well (at least for some kind of work)? To get a better understanding of these different levels, I find the concept of Kanban Flight Levels as developed by Klaus Leopold very useful. 

What are your experiences with separate vs. common queues (and the post office)? Please leave a comment!


Like this post? Then you should check out my post Utilization as a proxy and my more recent post Keep the Ball rollin´