Getting better at Agile using Kanban Principles
Kanban is all about visualizing your work, and limiting your work in process. To represent the work and the workflow, Kanban Boards and Kanban Cards are used. Kanban teams can use the Kanban software or a physical one like a whiteboard with sticky notes. Once the visualization is complete you can see how the work progresses or moves across the board. If the workflow is interrupted, the team members can quickly identify and block the issues in advance.
The core practice in Kanban software development for improving the flow of work is to limit your work in process. At a point, when the board fills up with too much unfinished work, the team stops starting new work and focuses to complete the unfinished work. The team members re-focus their attention and work together to complete the unfinished tasks.
How Kanban fits with Agile processes
With Agile, Scrum and Kanban project management methods iterative delivery is ensured. Teams work in two-to-four-week “sprints” on small parts of specific end product and deliver the batch. By the end of the sprint, they complete one small batch of stories and the team explains the new features to the customer. Once this phase is completed, then the team plan the work for the next sprint.
As mentioned earlier, in a Kanban board the teams visualize the flow of work. When the work is visualized well, it facilitates quick design, development, and testing that happen within each sprint. Let the flow of work be directed by the Kanban board otherwise, and switch the sprint container with a regular deployment cadence in its place. You will notice the impact is great.
A lot of time is spent at the beginning of every sprint trying to estimate and plan a batch of work for the entire sprint. Then by the end of the sprint you work hard to complete, test and deploy the entire batch. This is how the sprint approach works. However, when you are focusing on flow and using Kanban, you can move through the system without batching two weeks of work at a time, and still deploy completed code every two weeks. It saves the time and effort of going through the whole sequence of planning, estimating and moving a batch of work through to completion.
Based on the item that reaches the priority list in the backlog, planning and estimating, designing, building and testing for them are done. The next item to work is started only when there is capacity in the Kanban board. Eventually, when the two-week time approaches, the team delivers whatever is ready. This encourages members of the team to work with each item instead of worrying about having to finish two-week batch of work at one time. The team makes sure that each item is ‘Done’ before starting on the next item available for them to work on.
The Agile practice of iterative delivery is a better than the old waterfall or stage-gate project management methods. At certain times, using Agile process flow with Kanban can be efficient, resulting in shorter lead times and higher productivity.
In short, Kanban is a process improvement approach, not a process of its own. It can be applied to an existing process, like Scrum.
Kanban and Agile
Agile is still growing and adapting. Most of the ideas connected with Agile had begun to solidify way before Kanban. So, including Kanban as part of Agile may be confusing. Having said that, Kanban and the flow system work effectively in areas where iterative delivery model of Agile has struggled. It offers great value for teams in IT and software development that focuses on small bug fixes and improvements on existing production systems. For larger projects however, it is not practical to batch up work in two week.
The principles of Kanban software development can work well for areas such as creating marketing campaigns, event planning, inventory management, legal project management, etc.
Kanban can be applied to anything that has a process, whether it is simple or complex.
So, without abandoning any of the good things in Agile, Scrum, or current process that is already working well for you, you can apply Kanban to it. It will ensure greater visibility, and improve the flow of work.
Kanban facilitates Agile Awesomeness!