What is Kanban?
Kanban is a very popular project management methodology which is very common in software development domain (however, the approach is used in many other domains). This methodology emphasizes transparency (Kanban board), face to face communication (like mentioned in Agile manifest) and limitation of work in progress (WIP).
Kanban was introduced many years ago. Some companies, such as Toyota made this framework extremely effective and popular.
Why amount of items in progress should be limited?
Some team members tend to start working on new items even if some others have not been completed. As a result, the team has bottlenecks and the overall progress decreases. To help deliver items faster, the methodology says that the team should limit items in progress.
What limit for WIP a team should choose?
It depends. Kanban does not prescribe a specific number. However, it says that the team should determine its own optimal number. From my perspective of view (this is just an example), WIP should be set to 6-7 for 5 developers.
What team members do when the limit is reached?
Let's say the team includes 2 persons. WIP is set to 3. One person works on task A. Another person works on task B. Second person understands that he cannot implement task B because additional information from a stakeholder is needed. That's why he starts working on task C. So, currently the team has 3 tasks in progress. However, first team member understands that he cannot finish task A because a third-party component will only be delivered tomorrow. He cannot take 4th task because the team has already reached its limit (3 items). However, the first team member can help the second one with his tasks. Hope, the explanation is clear :)
So, team members should help each other in order to move work items from left to right (or, in other words, to complete work items). It's very effective.
Key aspect of the methodology is Kanban board, which allows visualizing work items and workflow. Nowadays, virtual boards are very popular (different software products are used) whereas physical boards can be used in order to make the team more friendly (all team members can meet many times per day near the board and discuss items). Boards allow to to visualize work items, clarify statuses and help to understand status of the project or phase.
Kanban does not prescribe statuses (column names), however very common are the following: To Do, In Progress (this one should be limited) and Done. Team should determine what columns work best for a particular project.
Normally, items are moved from left to right and team members should take items from the top.
Example of Kanban board:
Kanban includes six core principles such as limitation of work in progress, visualization and some others.
Where Kanban can be useful?
Projects which has constant changes in requirements (for example support activities) or activities which difficult to plan (for example bug fixing) in software development.
This methodology does not prescribe any roles.