Flow Management

System add value for the customers, without waiting time between the steps. Continuous flow, enables faster feedback, leading to improved quality, increased predictability, increased trust, fewer expedited requests, and faster delivery of value. Flow also exposes improvement opportunities with the goal of faster flow.

Kanban helps by highlighting the issues in the process to help improve the flow of work, reduce waiting time, and remove blockers.

Ways to get faster flow: eliminating waste

To eliminate waste, ask this question frequently “What’s stopping the work from flowing?” Since every step of one piece continuous flow should add value for the customer (end customer or internal customer in the next step), anything that does not add value to the customer is a waste and needs to be eliminated to enable faster flow.

It is important to realize that over-obsessing on waste is not healthy and not analyze each activity as value-adding activity like having standups or moving the status of the stories on the Kanban board, etc. Instead, look at the return on time invested. For example, if it takes a few sections to keep the cards on the Kanban board updated, the time spent on that activity adds value for the stakeholders to be able to clearly see the flow of the process and current status and if anyone is looking for work, that person would easily know where he can help without disrupting other people’s work.

Seven wastes of software development:

  • Partially done work
  • Extra feature (build what customer does not need)
  • Relearning (failing to remember mistakes)
  • Handoffs (handing off work to other person wastes not only time to convey information but also information gets lost too in the process)
  • Delays (Slow flow, longer feedback loop)
  • Task switching (Switching the state of mind from one task to another)
  • Defects (work come back because something was not done correctly the first time and disrupts the work in progress)

Strategies to keep the work flowing

1- Limiting Work in Progress (WIP): When there are fewer things in process the work flow faster.

2- Reducing waiting time: Waiting time can be waiting to deploy, waiting to test, waiting to pulled into next column. Some steps to reduce waiting time are as follows:

  • Have an explicit way of showing that work is done in current step and waiting for the next step, so that others know work is ready to be pulled and if waiting is an issue waiting time can be measured.
  • Go out of your own workflow and your Kanban board, if starting of your work depend on some one else, to identify reason of wait.
  • Ensuring the work is ready to be started, which can be done by planning and breaking down work to minimize dependencies, designing the work for collaboration, so that multiple people chip away on the work during waiting time or having external team be on standby before you start the work.
  • Make work items smaller. Larger work items increase the amount of in progress work items. Also larger work items are harder to estimate as they hide the issues which become visible when working on it.
  • Make work items similar sized which gives consistent flow and more predictability.

3- Removing blockers: Blocker is something that is not under your control and you are depending on external team or system. Build the system, so that you are never blocked. If you are blocked do not pickup something new, instead help others to get their work reach the finish line or maintain a list of tasks that can be done during the time you are blocked, as otherwise, when the blocker is removed then you will have two in progress work items, which will add context switching and increase waiting time or handoff to some one else which will incur waste too. Some steps to reduce blockers:

  • Track blockers and how they effect you is the first step to reduce blockers. We can see how much of the total cycle time is spent on being blocked and then team can look into ways to remove those blockers.
  • Swarm in order to limit the work in progress and work together to resolve the blockers or defects quickly in order to get back to the normal flow.

4- Avoiding rework: When a defect is identified rework has to be done as the work item move backward, which increases the cycle time, effecting the flow. Some steps to avoid rework are:

  • Build quality code from the start, by investing in technical practices like pair programming, test driven development, continuous integration and test automation.
  • Minimize time between introducing and fixing the bug. It saves a lot of time when the testing is done and any bugs are identified right after coding is complete.

5- Building Cross-functional teams: Cross-functional teams consists of people who have all the skills needed to get the work done, which reduces dependence on other teams and lesser hand offs resulting in eliminating waste.

6- Timeboxing: Timeboxing makes you aware of how much time you are spending on a task and helps you avoid gold plating the work.

Go back to the Essentials page

Reference: Kanban In Action by Marcus Hammarberg and Joakim Sunden

Tayyaba Sharif