Kanban is a loosely defined methodology. It is based more on principles than on instructions.
Kanban originated from the Toyota Production System and Lean Manufacturing. It was a way to limit the work in production for manufacturing, which results in increased efficiency and fewer inventories. So, now that you know about the origins of Kanban, you might be wondering how a system like it works for software.
What is Kanban
Kanban in software development focuses on the idea of continuous improvements through feedback loops.
To allow for faster feedback loops, Kanban relies on the Kanban board. The idea of using the Kanban board is to make all the work being done on a project visible and to limit the total amount of work in progress (WIP). This makes it easier to identify and decrease bottlenecks.
Kanban Board
A Kanban board is a simple board with several columns in it. Each column represents the various stages of work as it flows through the development process. For example, the columns might be as simple as to do, in progress, done.
Kanban Principles
Kanban focuses on several principles. They are the following: Visualize the workflow, limit work in progress (WIP), manage and enhance the workflow, continuous delivery, and make process policies explicit.
Visualize the Workflow
Having a visual representation of your work allows you to understand the big picture and see how the flow of work progresses. You can identify issues early because all the work is visible, including any blockers and queues.
Limit Work in Progress
A work in progress (WIP) limit determines the minimum and maximum amount of work each column can have on the board or for each workflow. By limiting the WIP, you can increase speed and flexibility, and reduce the need to prioritize tasks.
Manage and Enhance the Workflow
The flow of work on the Kanban board should be monitored and improved upon. Ideally, you want a fast and smooth flow because it indicates that the team is delivering value quickly. If the flow is not fast or smooth then the team should analyze problems and then implement changes.
Continuous Delivery
The Kanban method encourages small continuous changes. Teams can measure their effectiveness by tracking flow, measuring cycle time, and increasing their quality of work.
Make Process Policies Explicit
For collaborative change to occur, the processes must be explicit. The team needs to understand how things work and what “done” really means.
Kanban In Action
Kanban focuses more on principles than instructions, so, there is no defined way to use Kanban in software development. The process will vary from team to team.
Typically, the team would have some kind of backlog or list of work that needs to be done and that work would be prioritized. Then someone in the team would pick up new work to be done and add it to the Kanban board. The work would move across the board as it progresses from one stage to the next.
The number of stages will vary from team to team. For some, they might have the bare essentials like to do, in progress, and done. While for other teams, they might have analysis and design, in progress, testing, and deployment.
The Positives of Kanban
Here are some positives of using the Kanban method:
- Responsive to change. Kanban shines in situations where priorities are changing frequently.
- Reduced wasted time by removing activities that don’t add value to the team or organization.
- Shorter cycle times can lead to delivery of features faster.
- Provides a visual of the progress of the project.
The Negatives of Kanban
Here are some negatives of using the Kanban method:
- Every task is treated with the same level of urgency and importance once they are on the board.
- An outdated board can lead to problems. The team must commit to keeping the Kanban board up-to-date otherwise, they’ll be working off inaccurate information. Once work is done based off an out-of-date board, it is difficult to get things on track again.
- Lack of timing. There are no timeframes associated with each phase, so you really don’t know how long the to do phase will take.
What Kanban Means for You, the Developer
Kanban is simple to understand and use so it is likely you’ll encounter this methodology in a development team. Sometimes, the Kanban board is simple while other times it can get complex because the team started to customize the board to work best for them. If you are new to a team, make sure you know exactly what each stage on the board means. Sounds simple but imagine what happens if your definition of “done” is not the same as everyone else.
Kanban is a system that heavily relies on the Kanban board. So, make sure you and your team members keep the board up-to-date. Working on an outdated Kanban board is not going to help anyone. Once work is done based on an outdated Kanban board, it is difficult to get things back on track.
What are your experiences with Kanban? Do you think Kanban works well? What mishaps have you encountered when using Kanban? If you have tried out Kanban and Scrum, which do you think work better?
To stay in touch, follow me on Twitter, leave a comment, or send me an email at steven@brightdevelopers.com.