Lean is a way of thinking: deliver value to the customer with less waste, by improving the system on purpose. That matters to us because software work is the same way: we turn an idea into a running service that brings value to the customer. This page will cover the core idea of Lean through some questions, then how it applies to IT via flow, feedback loop, and learning from failure.
Think of Lean as a way we continuously practice to improve our system. And we practice it by answering five questions.
First, what is our purpose, or what problem are we trying to solve for our customer?
That question helps us understand what is our value to the customer, and it will be the goal of the system. Finding it first and keeping it in the center will keep us focusing on the actual value and moving forward to achieve the goal.
Next, what do we need to do in order to achieve that purpose? This question defines the set of work we need to do to bring the value to the customer. Based on that we can create the workflow and define the value stream.
Then we need to know what capabilities we need for these work, so that the work can get done.
Now we know what we need to do and how to do it, then we need to find a management system and soft skills to support the work running effectively.
And the last one: what is the basic thinking or mindset underlying the system that we need for pushing the system toward the goal?
By continuing to ask these questions and applying them to work, we will continuously improve the system, leading toward the goal of creating a value stream that has zero waste.
When applying Lean to IT, the value stream starts when we define the business requirement or idea, then through development we turn that into an application or service that is reachable by customers, and serve it to the customer via IT operations.
With that definition in mind, we have three ways to apply Lean to the system.
First, define the flow. The idea is, the system flow is created by individual work and the flow between them; by optimizing both individual work and how they work with each other, we can optimize the system.
There are some practices we can do:
Understand the flow: we require each individual to understand the flow of the value stream, and the direction of flow. The flow should only run in one direction; any backward move or stale is treated as waste. And inorder to do that, rework needed to be visible. It also puts on each individual the responsibility for their work so that it does not come back after they resolve it.
Seeking for improvement: individuals should know and move toward improvement, by applying new techniques and experiments to find the best for each step of the stream.
Known problems should never be deferred to the downstrea. This means that every known problem should be handled in the nearest place where it occurs. It also means that everyone should understand the definition of done so that they can evaluate and judge whether their work is done before they ship it to the next step.
Never allow local optimization to hurt global performance. This happens when an individual tries to improve performance but it ends up affecting others' performance.
The second way is creating the feedback loop. The flow goes forward, but after it is done, we need to ask for feedback from the customer to improve the flow. By that we can make sure that our change actually adds value to our customers.
And the third is create the environment that allows failure and support learning. Failure is costly, but it is necessary for learning and improvement. Learning from failure is an important step of improvement. So creating an environment that allows experiment and failure helps us learn faster and makes the system more resilient.
Lean provides us a way to optimize the system by cutting waste and reducing resources to deliver the value. By understanding the five core questions of Lean we can build a strong foundation. Then upon that foundation, we apply the Three Ways to affect the work. First, write down the flow and point out what is wrong with it, then add feedback loops, and then, carefully create the environment to accept failure and allow learning.
Top comments (0)