Picture of the book cover

Commitment

Staff liquidity takes a central position in this week’s installment of our read of Commitment – Novel about Managing Project Risk by Olav Maassen, Chris Matts and Chris Geary (2nd edition, 2016) .  Chapter 5 is a relatively short chapter, but exposes one of the critical mechanisms for how Agile teams are able to self-organize and self-manage.  If you are an Agile coach or involved in an Agile transformation, once you recognize the concepts in this chapter you will be surprised how many times you use them.  If have been struggling with the concept how Agile teams can handle the need to shift roles to address changes in needs with management intervention this chapter provides you with the knowledge you will need.    (more…)

Bottlenecks constrain flow!

Bottlenecks constrain flow!

 

We are revisiting one of more popular essays from 2013 and will return to Re-read Saturday next week with Chapter 4 “Creating A Guiding Coalition.”  

Kanban implementation is a powerful tool to focus the continuous improvement efforts of teams and organizations on delivering more value.  Kanban, through the visualization of work in progress, helps to identify constraints (this is an implementation of the Theory of Constraints).  Add to visualization the core principles discussed in the Daily Process Thoughts, Kanban: An Overview and Introduction which include feedback loops and transparency to regulate the process and an impetus to improve as a team and evolve using models and the scientific method and we have a process improvement engine.

Kanban describes units of work that are blocked or stalled as bottlenecks.  Finding and removing bottlenecks increases the flow of work through the process, therefore increasing the delivery of value.

A perfect example of a bottleneck exists in the highway system in Cleveland, Ohio (the closest major city to my home).  A highway (three lanes in each direction) sweeps into town along the shore of Lake Erie.  When it reaches the edge of downtown the highway makes a nearly 90 degree left hand turn.  The turn is known as Dead Man’s Curve.   Instantly cars and trucks must slow down.  Even when there is no accident the traffic can backup for miles during rush hour.  The turn is a constraint that creates a bottleneck.   If the city wanted to improve the flow of traffic, removing the Dean Man’s Curve bottleneck would help substantially.

Here’s an IT example to see how a bottleneck is identified and how a team could attack the bottleneck. We will use a simple Kanban board.   In this example, the team has a backlog similarly sized units of work.  Each step of the process has a WIP limit.  One of the core practices in Kanban is that WIP limits are not to be systematically violated.

Each step can have different WIP limits.

Each step can have different WIP limits.

As work is drawn through the process, there will be a bottleneck as soon as the analysis for the first wave of work is completed because development only has the capacity to start work on four items. In our example of an application of Kanban, when a unit of work completes the analysis step it will be pulled into the development step only if capacity exists.  In this case one unit of work is immediately blocked and becomes inventory (shown below as the item marked with the letter “B”.

Unbalanced process flows cause bottlenecks

Unbalanced process flows cause bottlenecks

The team has three basic options.  The first is to continue to pull more items into the analysis step and continue to build inventory until the backlog is empty.  This option creates a backlog of work that is waiting for the feedback, increasing the potential rework as defects are found and new decisions are made.  The second possibility is that team members swarm to the blocked unit and add capacity to a step until the blocked unit is freed.  This solution makes a sense if the reason for the blockage is temporary, like a developer that is out sick.  The third (and preferred) option is to change the process to create a balanced flow of work.  In this example, the goal would be to rearrange people and tools to create a balanced WIP limits.

Process improvement maximizes throughput.

Process improvement maximizes throughput.

 Visually tracking work is a powerful tool for identifying bottlenecks.  Kanban’s core practices dissuade practitioners from violating WIP because it limits the stress in the process, which leads to technical debt, defects and rework. Other core practices provide a focus on continuous process improvement so that when a bottleneck is identified, the team works to remove it.  Continually improving the flow work through the development process increases an organization’s ability to deliver value to customers.

 

IMG_3635The work performed to develop, test and implement any software package is a process flow. Not every team or organization will follow the same flow. Many factors can influence the flow of the work in order to deliver maximum value. Kanban is a popular technique to help a team or organization visualize, control and improve the flow of work so that more value is delivered. Kanban is especially valuable because the visualization exposes bottlenecks and constraints. When applying Kanban, one of the values implicit is adopting wait and see approach to making process changes.  In Kanban, you only make changes when data exposes a constraint or bottleneck. The determination of whether any flow problem is a constraint or bottleneck will affect how they are solved. While similar, bottlenecks and constraints are different and these differences drive how we address them.

A bottleneck is a resource that has a capacity that is less to demand placed on that resource while a constraint is a physical factor that limits performance. Applied to the typical software development or enhancement project, resources typically reflect the amount of effort people can apply. A tester with a backlog of 100 hours of testing to perform would be a bottleneck.  In the same development environment, an example of a constraint would be if the organization had one system testing environment and two teams wanted to use that at the same time and could not due to systemic conflicts. The limitations in the environment would be a constraint. Bottlenecks can be solved by changing or adding resources while constraints require changing the environment as part of changing resources.

Our poor tester is saddled with a backlog of 100 hours of testing.  The backlog reflects a work in progress that is sitting, waiting to be tested to determine whether the code works and meets business requirements. Defects in that code can potentially impact other work that is currently waiting to be tested, currently being coded or work that has previously tested, therefore waiting to test delays feedback.  Two simple changes can be made to improve flow.  The first is slow the amount of work coming to the tester so that work gets to the tester just when it can be tested (reduce the amount of code being written or changed) or increase the number of testers (real or virtual). To remove the bottleneck the organization could reduce the amount of work that needs to be tested or increase the capacity of testing by adding tester. Bottlenecks can be solved by adding, rearranging or reducing resources used in the overall process without changing the environment..

In the article Kanban: Process Improvement and Bottlenecks we used the metaphor of water pouring from a bottle to visualize bottlenecks.  The neck of the bottle is a constraint. If the goal was to improve flow would need limit the amount of water entering the neck of the bottle or remove the constriction.  Adding more neck to the bottle would not affect the flow positively.  In our testing environment example, in order to improve the flow and reduce waiting we would either have to plan project work better so that only one group wanted to use the environment at a time or make a physical change to the test architecture by adding a second (or perhaps more) system test environment.  In order to solve constraints the environment must be changed to solve the flow issue (other resources may also be changed in addition).

Note – Either case requires an overall systems view of the development and enhancement process used by the organization or team. This ensures that removing one constraint or bottleneck just doesn’t create another!

The difference between bottlenecks and constraints may seem to be overly nuanced however understanding that a constraint can be addressed by adjusting resources whereas a bottleneck will require physical changes to the environment is critical to ensuring effective change.

 

Bottlenecks constrain flow!

Bottlenecks constrain flow!

Kanban implementation is a powerful tool to focus the continuous improvement efforts of teams and organizations on delivering more value.  Kanban, through the visualization of work in progress, helps to identify constraints (this is an implementation of the Theory of Constraints).  Add to visualization the core principles discussed in the Daily Process Thoughts, Kanban: An Overview and Introduction which include feedback loops and transparency to regulate the process and an impetus to improve as a team and evolve using models and the scientific method and we have a process improvement engine.

Kanban describes units of work that are blocked or stalled as bottlenecks.  Finding and removing bottlenecks increases the flow of work through the process, therefore increasing the delivery of value.

A perfect example of a bottleneck exists in the highway system in Cleveland, Ohio (the closest major city to my home).  A highway (three lanes in each direction) sweeps into town along the shore of Lake Erie.  When it reaches the edge of downtown the highway makes a nearly 90 degree left hand turn.  The turn is known as Dead Man’s Curve.   Instantly cars and trucks must slow down.  Even when there is no accident the traffic can backup for miles during rush hour.  The turn is a constraint that creates a bottleneck.   If the city wanted to improve the flow of traffic, removing the Dean Man’s Curve bottleneck would help substantially.

Here’s an IT example to see how a bottleneck is identified and how a team could attack the bottleneck. We will use a simple Kanban board.   In this example, the team has a backlog similarly sized units of work.  Each step of the process has a WIP limit.  One of the core practices in Kanban is that WIP limits are not to be systematically violated.

Each step can have different WIP limits.

Each step can have different WIP limits.

As work is drawn through the process, there will be a bottleneck as soon as the analysis for the first wave of work is completed because development only has the capacity to start work on four items. In our example of an application of Kanban, when a unit of work completes the analysis step it will be pulled into the development step only if capacity exists.  In this case one unit of work is immediately blocked and becomes inventory (shown below as the item marked with the letter “B”.

Unbalanced process flows cause bottlenecks

Unbalanced process flows cause bottlenecks

The team has three basic options.  The first is to continue to pull more items into the analysis step and continue to build inventory until the backlog is empty.  This option creates a backlog of work that is waiting for the feedback, increasing the potential rework as defects are found and new decisions are made.  The second possibility is that team members swarm to the blocked unit and add capacity to a step until the blocked unit is freed.  This solution makes a sense if the reason for the blockage is temporary, like a developer that is out sick.  The third (and preferred) option is to change the process to create a balanced flow of work.  In this example, the goal would be to rearrange people and tools to create a balanced WIP limits.

Process improvement maximizes throughput.

Process improvement maximizes throughput.

 Visually tracking work is a powerful tool for identifying bottlenecks.  Kanban’s core practices dissuade practitioners from violating WIP because it limits the stress in the process, which leads to technical debt, defects and rework. Other core practices provide a focus on continuous process improvement so that when a bottleneck is identified, the team works to remove it.  Continually improving the flow work through the development process increases an organization’s ability to deliver value to customers.