Kanban Methodology
This is a popular framework used by most software teams finding it’s roots in the late 1940s as Toyota was trying to optimize its engineering process by mimicking the way supermarkets stock products i.e Just enough to meet customer’s demands.
Because inventory levels match the consumption patters the supermarkets gain efficiency in inventory management by decreasing the amount of excess stock it must hold. Meanwhile the supermarket will ensure that needed products are always in stock.
Toyota was searching for a number of things when applying this.
- Align their massive inventory level with the actual consumptions of materials.
- To communicate capacity levels in real time to suppliers … let’s think of task duration estimation.
This is what is similar to what we know as JIT (just in time) manufacturing process.
For Software Development?
Agile teams today can leverage the principles from this by matching the amount of work in progress (WIP) to the capacity they have in their teams.
What if working as an individual?
How to determine personal capacity?
The JIT principles would avail a number of things to a team.
- More flexible planning.
- Faster output.
- Clearer focus.
- Transparency through out the development cycle.
These I would think are even more attractive to one when working as an individual.
Kanban principles are timeless and applicable to all manner of industries, however software teams find it easier to adapt due to a number of factors.
- Little to no overhead since the basic logic of the system is one familiar to software teams.
- No physical changes are actually needed to implement the principles, The most physical items needed by a software team would be a board and cards and those can very easily be virtual.
Work on a Kanban Team.
Teams using the Kanban technique will have their work mostly orchestrated by their kanban board. This being a tool for visualization and optimization of workflow within and between teams.
The board serves to:
- Visualize the team’s work.
- Ensure the team’s workflow is standardized.
- Identify and resolve blockers and dependencies.
A basic kanban board has a 3 step workflow,
- To Do
- In Progress
- Done
This can however be adjusted according to the unique process of any team.
Please note: The Kanban approach relies on full transparency of work and real-time communication of capacity.
The board should become the single source of truth for the team’s work.
Kanban
The word kanban
translates to visual sign
in english from it’s native Japanese, in teams using kanban every single work item will represented as a single card on the board.
Err on making user stories too small.
The main purpose of work as a card is to allow team members to track the progress of work through its lifecycle in a visual manner.
Kanban cards will feature a number of items.
- Critical Information about work item.
- An Assignee.
- A brief description of the job being done.
- How long that piece of the work is estimated to take.
- Screenshots and other technical details valuable to the assignee.
The reason for this amount of detailing is to allow the whole team context of where the team stands in relation to getting to the goal.
This allows team members to
- Know the state of work and the associated details.
- Potentially increasing focus of developers.
- Perform faster and more accurate issue tracking.
- Identify blockers and dependencies.
Benefits of Using Kanban.
- Ease of planning — A kanban team is only focused on the Work In Progress when that is done they pluck the next item off of the backlog, Curated and maintained by a
product owner
who can reprioritize work at theoretically will although strongly encouraged to work with development for this to present any surprises from occurring. - Shorter Development Cycles — A development cycle is the amount of time it takes a unit to go through the team from conception to shipping. Optimization and observation here can easily be used to forecast future delivery of work. Note this is a step where a team can be developed — Overlapping skill sets lead to shorter cycles employ utilities such as mentoring and code reviews to spread knowledge. Enabling members to take on diverse types and complexities of work as a team. When Backups of work occur the team can easily swarm the unit the get the process flowing again. It is the whole teams responsibility to keep things moving.
- Less Blockages — With developers only tasked with focusing on the work item they are responsible for and only focusing on Work In Progress, There is less multitasking which has been shown to increase context switching which hinders the paths to completions. Typically teams will enforce limits to various stages of their workflow to encourage members to pay special attention to certain perts of their work flow.
- Allows teams to visualize metrics — When performance is measured, performance improves. When performance is measured and reported back, the rate of improvement accelerates.~ Karl Pearson. Allowing the teams to see the data of their work will make it easier for the team to spot blockages and remove them. The aim of the learning from one project’s board to another is to see how to continually improve the team efficacy.
- Continuous delivery — This is the process of releasing work, products, updates frequently even daily or hourly if possible. Kanban complements CD because both techniques focus on just-in-time and one-at-a-time for delivery of value.
A faster team can deliver innovation to market.
References.