Although many development teams prefer building their working process in accordance with Scrum, it is not a universally applicable approach that suits every single team in every single situation. Along with Scrum, there is another approach that is proved to be very effective – Kanban, a lean manufacturing methodology. We prepared the material that explains the essence, principles, and workflow of Kanban, as well as tips for its most effective usage.
WHAT IS KANBAN?
Kanban (カンバン or 看板, ‘billboard’) as a manufacturing approach was invented by Taiichi Ohno for the Japanese company Toyota in the late 1940s. Virtually, this approach is all about balance: it is aimed at escaping the situation when the overload of one department puts a break on the working process of the other department. Kanban is based on 4 principles:
- 1. Visualization of the work process with the help of a board and cards.
- 2. The limited amount of tasks in every stage.
- 3. Optimization of the production process on the base of flow-related data.
- 4. Continuous improvement, usage of innovative methods and solutions (so-called Kaizen culture).
Implementation of this manufacturing execution system contributed to the company’s success and helped to avoid excessive work, an this, in turn, led to the popularity of Kanban, so that it started being used in many spheres, including software development.
KANBAN IN SOFTWARE DEVELOPMENT
Applied to IT sphere, Kanban as an Agile approach is great to use on the work with a backlog. First of all, a board with several columns that stand for stages of development is created. These columns are usually “To Do”, “In Progress”, and “Done”, but the team can add any other column they consider as necessary, for example, “Testing”, “Blocked”, etc. Then a project manager, who is responsible for setting priority tasks from the backlog and making sure that the work process is performed in accordance with Kanban rules, writes each task on a card and assigns it to developers. These cards are moved from one column to another, after the completion of each stage. Each column can include a certain amount of cards and no more. By the way, task estimating in Kanban is not necessary, but the team can do this in case they need some sort of predictability. Unlike Scrum, Kanban system estimates each task in accordance with the average time of its completion.
Every day a team holds short daily meetings, aimed at monitoring the status of tasks and optimizing the process of their passing through each stage. During these meetings, the team members gather around the Kanban board. The main goal here is to think of ways for minimizing the time a task spends in all columns. The team analyzes each task discussing whether it can be done, if not why, and what can be done in order to finish the task as soon as possible. The tight communication between team members is another important thing in the workflow. For instance, if the “Testing” column is full and developers can’t place the card with the finished task there, they communicate with QAs to find out why it happened and how to help them. Vice versa, if the same situation occurs with developers when the QAs have to return the card in the column “In Progress”, team members discuss the problem and try to find a solution.
Thus, implementation of Kanban caters for concerted efforts of the team and helps to concentrate on the task currently in progress, rather than on an aspiration to deliver certain functionality within time limits, as in Scrum. Kanban is the ideal solution for teams working on a startup, support teams and other projects that don’t have a clear plan so that changes can be incorporated into the backlog at any time.
TIPS FOR SUCCESSFUL KANBAN PROJECT MANAGEMENT
As mentioned above, the Kanban approach was invented to run production lines and then adapted for the software development process. Hence, if you want to implement Kanban you might face some problems. Therefore, here are some tips to follow when you use Kanban in your project.
- 1. Kanban approach doesn’t suit large teams, as the more people are involved in the development process, the more difficult it is for the manager to ensure the number of tasks in each column doesn’t exceed the agreed one and thus to monitor the Kanbanflow. So if you want to implement it, make sure your team consists of no more than 5 members.
- 2. If your team deals with Kanban system for the first time, you need to pay attention to the Kanban “education”, as, despite simple rules, many are struggling to understand Kanban. Therefore, organize training, provide your team members with educational blog-posts or advice reading books devoted to lean Kanban methodology.
- 3. In order to increase the productivity, you can divide it into separate development team and testing team, each of which will have their own backlogs.
- 4. Kanban is not a good decision for purely product teams, but the integration of Kanban with Scrum is. A sensible implementation of Kanban rules in Scrum can make it more agile and increase the effectiveness of your team.
- 5. It is good to create some Kanban policy guidelines that clear up main work-related issues. For instance, specify the number of columns, deadlines, criteria for moving the card to the next stage, who can add and move cards, etc.
- 6. Make sure daily Kanban stand-ups are held not just to tick the box. Prepare for each meeting, encourage your team not to report but share information. The result of each Kanban stand-up should be a short-term plan, so that members of the team understand the statuses of tasks and the status of the whole project.
- 7. When the team consists of remote developers, a white physical board with bright coloured stickers has to be replaced by online ones. There are several free Kanban board softwares that your team will love, such as:
- Kanban Tool
- Virtual Kanban
If you want to learn more about Kanban methodology, you can also read books “Kanban Maturity Model” by Teodora Bozheva and David J. Anderson, and “Kanban and Scrum: Making the Most of Both” by Henrik Kniberg & Mattias Skarin, where this approach is discussed in detail.