Archive for the ‘Kanban’ Category

Systems Thinking


It all started when I read The Fifth Discipline – The Art and Practice of The Learning Organization by Peter M. Senge. I was inspired to read it after my brilliant previous colleague Pat Kua did a workshop on Systems Thinking. (Dennis Stevens wrote a better summary about this book than I will ever be able to.)

I then continued by reading Freedom from Command & Control by John Seddon as well as attended a presentation from John Seddon on the same topic. While Peter Senge’s book was a very interesting read – John Seddon’s was the easiest one to grasp and the one that really opened my eyes.

Seddon brilliantly shows how the wrong targets and measurements encourage the wrong behaviour and creates what he calls failure demand. Furthermore managers and governments sometimes specifies how people should execute their work – with the intention that these processes will then produce the best results. However, as you probably already know – it rarely does – and leads to poor results and demotivated people. Especially managing cost often leads to sub-optimizations which is not good for the end result. (I find some of this is a good match with the Beyond budgeting movement.)

I would love to use some of Seddon’s own examples to convince you, but I would encourage you to read his book instead. I will try however, to give you a few examples of where I have recognized these patterns in IT projects myself:

Managing cost:
Many IT projects seem to be managed on cost. This sometimes leads to testing only being applied at the end of a project (because that should mean less man hours needed for testing.) This obviously leads to bugs only being found at the end of the project. The later you find the bugs – the harder it is to fix them – and the more expensive you can argue it is to fix them. One of the reasons they are expensive to fix later would be that the developers might have forgotten everything about that area in the code base – the ones who wrote the code might even be gone. Also there is a huge risk that parts of the application might have to be redesigned etc.. So by managing cost – and trying to reduce the cost of one part of a process – the total cost of the project might end up higher than what it could have been had the testing started day one.. One should look at the project as a whole and not try to optimize parts of it independently. And while you are at it – does the project itself make sense at all – if you look at it from a Systems perspective?

Targets and failure demand:
Measuring velocity is common in Agile projects these days. In Kanban you would often measure cycle time. The problem however, is that we rarely get to measure this end to end. I.e. from when the customer requests a feature until he actually starts using it. Let’s say you only measure cycle time from when a developer picks up a story until it is ready for System Test. The developer might have to make the story pass a few unit and acceptance tests, but bugs found later in the process might be raised as new bug stories. Hence in terms of the statistics it does not make sense for the developer to go that extra mile and build in the amount of quality needed for the story to pass System Testing. The developer keeps coding at a high speed – while new bugs are raised. From a Systems Thinking point of view – i.e. from the end customers point of view – this of course does not make sense. The bugs are essentially failure demand – and reducing the failure demand would probably allow the user to get to use his (bug-free) features earlier and cheaper.

To fix this, you should start by looking at the System that encouraged this behaviour in the first place. Namely remove the targets that created local optimizations. From a Systems Thinking perspective it is not the developer’s fault that he produced a lot of bugs – it was the targets he was measured on. So is it his manager’s fault then? Well, maybe, but how is she measured then?

Starting out with Agile – you might try to follow the book – and hence end up doing for instance estimation. I.e. Scrum and XP says we should do estimation – if it doesn’t work for us – then we are probably doing something wrong so we should read some more about Scrum and see how we could do estimation better.

Wait a minute – if estimation doesn’t give you anything – then you shouldn’t do it! Blindly believing in processes or measuring people on compliance – is not the way to get the good results. The important thing is the end result – not how you got there.

Eye opener
What I realized as many have before me, is that all these different tools, CI, pair programming, estimation, 7 types of waste, product owners etc. are all just tools. You should use them if they make sense in your context, but don’t use them just for the sake of it. It is not like Kanban is always better than Scrum. It is not like stand-ups is something you have to do. It is not like IT is the solution to every problem. It is not like people are stupid just because they do stupid things – they are to a certain extent a product of the system. Reflect on your end goal. Learn to see underlying structures. You will be amazed!

Is this it then?
No it is not. I believe I have finally learned by know – that whenever I discover a better theory or a better tool – there is always something better waiting for me around the next corner. Take a look at Jurgen Appelo’s stuff on Complex Systems or the Chaordic Mindset in Bob Marshall’s the Marshall Model of Organisational Evolution for instance.

There is much more to Systems Thinking – and I have only barely started to understand it. Feedback is more than welcome!


Distributed “Kanban”


The distributed team I am working with currently has been trying out a little bit of Kanban.  We have assigned a WIP limit to the In Development / For Review column(s). That is, if the total number of stories in the In Development + For Review columns adds up to (or more than!) the WIP Limit, you should not pick up a new story, until at least one story has been reviewed and closed off and we are again below the WIP limit. (Ideally, going forward we should obviously add WIP limits to other parts of the process to, but we had to start somewhere.)

While there are lots of interesting things to say about this – such as that it has made us more disciplined and probably reduced lead time (working on the stats) and might make the team more predictable –  I will focus on the distributed side of things in this post.

Communication is a challenge on every distributed project I would say, and hence getting buy-in and understanding of the WIP limits at one location, does not necessarily mean that every location understands or starts respecting the WIP limits immediately. As every other change effort, one needs to use the full range of consulting skills / influence strategies.

What is a concrete challenge though is the time-zone differences. If one team finishes development and puts a story into For Review, then their typical next step would often be to pick up a new story. What so if the WIP limit will be breached? Should they wait until the resources that will do the technical and business reviews of the stories gets in (given they work in a different time-zone)? Or should they break the WIP limit?

The previous might force you to add a bit of a buffer to your WIP limit. And that might make sense. However, initially this is what happened to us: Location B puts story 1 into For Review and picks up story 2. Location A reviews story 1, but it needs more development or bug-fixing. Location B gets in the next day, does some fixes on story 1, and finish development on story 2. They even pick up story 3. Location A reviews story 1 and story 2, but they are both still not accepted. Hence Location B now has 3 stories in play.. This could go on for some time.

Let’s say the capacity of Location B is to work on one story at a time. Does it make sense to add in a buffer of 2++ extra then? I tend to disagree. So what we ended up communicating to Location B was to focus on quality before quantity. Do not rush to pick up new stories, but try to finish stories with significant quality.

What happened was two things:

1. Location A started reviewing stories much quicker. Focus was first on cleaning out the For Review queue – then do some development. (In order to give Location B quicker feedback, and prevent them from picking up too much new work before stories had been successfully reviewed).

2. Location B decided the brilliant thing of doing some local technical review first, before marking the story as For Review. This raised the quality, and took some of the work load off location A. It also meant that Location B are no longer rushing to picking up new work, but focusing on completing stories properly.

These two things allowed us to keep our WIP limit relatively tight. We do have a buffer for the stuff in For Review, but we try to keep it as small as possible.

Personal Kanban


A few weeks ago I attended by @JR0cket. He explained how he was using an online Kanban board to manage his own personal studying. Most interesting I found his done state definition; “Blogged”. The idea is that given a reasonable WIP limit, before you can start a new pet project or read a new book, you have to blog about the task you just finished. And that is exactly what I am doing now:

Using the iKan app on my iPhone, my Study Kanban board looks like this (WIP limits in brackets):

Backlog (4) -> Studying (2) -> Write blog post (2) -> Blogged / Done.

Already, this has forced me to focus on just a few topics at a time. Hopefully I will be disciplined enough to try to always write a blog post before moving anything into the Done state. As John mentioned; you force yourself to study a bit harder when you know you have to write a blog post about it later.

If I remember correctly, John had at least two Kanban boards for more or less different processes. I have gone down that road myself as well, with the following additional “Personal Economy etc.” Kanban board:

Ready (5) -> Doing (2) -> Done

I am currently reflecting on the concept of having several Kanban boards. The WIP limits are not very effective if I can get around them just by adding a new board. However, the two processes are significantly different. I am pretty sure people don’t want me to blog about my Tax returns etc. Perhaps having a shared backlog or similar could be useful.

Imagine the following scenario: I want to add a new book to my study backlog, but because it is full I have to finish another task first. If I had a shared backlog between my study and personal stuff, this could force me to prioritize and get started with some boring chores and actually get them done. I guess the only thing stopping me from trying this is my current tool set. Once again it seems a physical board could be the simplest solution. To be continued..

A Kanban Brown Bag Recipe


Kanban appeals to me, and I have had the privilege to hold a brown bag on it two times in the last weeks. The feedback and especially the discussions it started exceeded my expectations in a very positive way. Therefore, I thought it might be worth sharing my recipe for a Kanban brown bag.

The materials you need:

  • Henrik Kniberg’s Kanban kick-start example. (Thank you very much for sharing this Henrik! It would have taken ages to prepare the brown bag without it)
  • A keyword cheat sheet
  • 20 coins
  • 5 stopwatches (or mobiles)
  • 8 participants + yourself

Step 1: Presentation
Connect your computer to the projector and open Henrik’s kick-start example. Scribble down the following keywords on a flip chart as you explain how they are illustrated with Henrik’s example:

  • Visibility – The Kanban board. Visualize bottlenecks
  • Limit Work In Progress (WIP) – Avoid task-switching. Focus on throughput rather than over-utilizing individuals
  • Pull – You are not allowed to push work down the workflow, you pull work when you are ready and are below WIP limit
  • Flow – A steady flow (all the way from analysis to production), not iterations
  • Cadence – You measure and predict, instead of plan and promise

Assuming you have a basic understanding of Kanban and agree with my selection of keywords, your audience should now have learned the basic concepts of Kanban. To make them fully grasp the value of limiting work in progress the next step is to play a simple game:

Step 2: Play a game
I learned this game at XTC (once again thanks to Henrik Kniberg who facilitated the game at XTC).

Basically you start with four players, and four “managers”, standing behind one player each with their stopwatches ready. The first player gets 20 coins. His job is to flip all 20 coins, then pass them on to the next player, which will then flip all 20, then pass them on etc.. Each manager measures the time, from when his player starts flipping the first coin, until he has flipped all 20. You as a facilitator, should measure the time from the first person flips the first coin, until the last person flips the last coin. The initial scoreboard would look like this:

Batch size Player 1 Player 2 Player 3 Player 4 Total time

The next round, the first person flips 5 coins, passes them on, flips the next 5 etc. Each manager measures the time from his player flips his first coin, until he passes the last coin on. The next person starts flipping the 5 coins as soon as he receives them, passes them on, then starts on the next 5 when available… You as a facilitator, measures the total time. The last round, the first player flips one single coin, passes it on, then flips the next..

If you don’t want to know the typical outcome of the game, stop reading now!

The outcome of the game will most likely look something like this:

Batch size Player 1 Player 2 Player 3 Player 4 Total time
20 9.8 11 13 14 56.4
5 16.7 17 21.5 19 32.6
1 14.9 21 23.1 22.3 26.3

As you can see, the individual times is higher for the smaller batch sizes. However, the total time is much better for the smaller batch sizes.

Batch size Methodology
20 “Waterfall”
5 “Scrum”
1 “Kanban”

I have indicated next to each total time which process the different batch sizes could relate to. Hence, tell your audience that if they want to improve their overall throughput, they should limit their WIP and give Kanban a try 🙂

Thanks again to everyone in the community who have shared their material and knowledge.