Why + When to use Kanban in Software Development?
Kanban as a method has its roots in production and is an important element of both Kaizen and Lean production. Kanban is focused on the pull strategy, with resources allocated based on where and when they are needed to support just-in-time delivery.
But how can Kanban be applied in software development and what are the benefits of using this method?
The principle method of visualization in Kanban is the Kanban board and in a production environment, this is a physical board where tickets for the demand of resources are placed. It is impossible to use physical boards in software development, since teams are working in a virtual environment mostly in distributed locations. In software development, a virtual Kanban board can be applied. Kanban is a method that greatly assists teams to be Agile and therefore agile project management and ALM tools usually provide a Kanban board (electronic cardboard) view.
How Kanban delivers benefits in software development:
- Easier changes – cardboard column names are representing the different states of the workflow. Visualizing the flow of work is core to understanding how work proceeds, and ensures easier decision on changes.
- Shows WIPs – The critical elements are that work-in-progress at each state in the workflow is limited and that new work is “pulled” into the new information discovery activity when there is available capacity within the local WIP limit.
- Helps to manage the flow – The flow of work through each state in the workflow should be monitored, measured and reported. The Kanban board is also helpful for project managers to get insight into the progress of work.
- Supports problem solving and risk management – Due to the explicit understanding of how things work and how work is actually done, it is possible to move to a more rational, objective discussion of issues, problems, risks among team mates. Using this method it facilitates the consensus around improvement suggestions.
- Promotes collaboration and experimentation – Kanban encourages small continuous, incremental and evolutionary changes that stick. For example, Kanban can support effectively the daily stand up meetings of Scrum, as it gives a quick overview on tasks, status, WIPs for a better resource allocation. It implements continuous, incremental and evolutionary changes, and increases the motivation and self-governance of teams.