Queues and WIP limits, which I discussed in the previous posts, make up a chief indicator of problems in the flow. They show bottlenecks and when they are going to form. Bottlenecks are noticeable by an accumulation of work before them, and when in the queues after them there are no tasks. The board below shows that a lot of programming tasks but nothing to test.
In this example, programmers cannot start new tasks because they would exceed the limit of two tasks. A step after programming (Tests) does not contain any work because nothing goes out from the programming column.
These are a few things which you can do in order to use a bottleneck better:
- Make sure that people (and their roles), working within the bottleneck area (in this case – testers), always have something to do — for example, by creating a work queue before them.
- Create with the best quality to minimise loading.
- Eliminate or limit moderators.
- Eliminate obstacles in the work or obstacles which cause that tasks must wait.
- Specify priorities in detail for a bottleneck so that in each case the most important work is carried out. You do not want the limitation to waste time on unimportant work? Remember that this reduces the speed of the entire system.
- Balance the speed of delivering work.
Kanban detects bottlenecks dynamically
Limits are a significant difference between the Kanban board and other storyboards. The limitation of work in progress (WIP) at each process stage prevents overproduction and detects bottlenecks quickly so that they may be prevented on time.
The board below depicts a situation in which developers and analysts cannot take more tasks until testers release a gap and take a new working element. At this moment, developers and testers should look for the ways to help testers in the work.
Note that I divided some columns into two parts in order to indicate ongoing working elements and elements finished and ready to be handed over to the next process. There are a few different arrangements on the board. It is quite a simple way. The limits in the top of the divided columns cover waiting and ongoing columns.
After the testing of the functions is completed by testers, they move the card to a gap in the column “Test” (Tests).
Now, a gap in the column “Test” may be filled with one of the cards in the implemented production column. This releases a gap for programming and a next card may be drawn from the columns analysis, etc.
Buffer your bottlenecks
Since a bottleneck is so important, one of the things to do is to make sure that there will be work. It is worth noting that in Kanban we purposefully limit work in progress (WIP), and working elements differ in size; so a few processed large elements at an earlier process stage may temporarily mitigate a bottleneck. I have used a “waiting” buffer here. The problem is that when the limit is set for the entire stage it comprises ongoing work and a buffer. A solution is to transfer limits from the entire stage to the columns describing work in progress. No one has an empty buffer and at any given moment we may open any number of tasks in accordance with our WIP.
Every additional WIP element imposes a penalty in the form of implementation time so begin with low quantities and increase or decrease them empirically. Divide larger working elements into smaller ones and vice versa. The decrease in the variability of the sizes of working elements will allow for the reduction of buffer size.
This is one of the possible counteractions for bottlenecks. Kanban enables the efficient visualization of problems. It also offers other mechanisms based on indicators and reports which improve the process. I will discuss these indicators and reporting in the next post.