Lean is nothing more than commonsense efficiencies but on steroids. Once you start thinking Lean, you never look back. Lean is often associated with the term Six Sigma; however, the two are very different concepts. Six Sigma is systematic decreases in process variation that helps reduce defects. So, for now, think of Lean as eliminating wasteful steps in a process (from the customer’s view), and Six Sigma as standardization of processes so that nothing varies.
Nothing teaches like a good example. In this video, I describe a few examples worth watching. More examples are further down in this article. I want to hear your thoughts about my candy bar wrapper question in the video. Be sure to comment on it.
Drive from Point A to Point B
Imagine you must drive from point A to point B in your car. Let’s break down some of the possible steps in this process.
- Find your car keys
- Walk to the car in your garage
- Press the garage door button to open it
- Open the car door by either pressing the FOB or using the key.
- Sit and turn the ignition on
- Reverse out of the driveway
- Find the directions on your favorite map app
- Drive towards point B
- Arrive at point B and exit the car.
The two processes I would consider non-wasteful in the above list are:
- “Drive towards point B” and
- “Arrive at point B.”
One hundred percent of every other bullet point above is a wasted step. I know, but “you HAVE to open your car garage door to exit.” I would argue that you don’t need to do this. What if your garage door knew that once your car door is opened and you get in, it opens automatically? Pressing the garage door is a step that is wasted. Also, let’s pretend your customer was paying you to travel from point A to point B. Would they also want to itemize the cost and pay you to open the garage door? The answer is no.
Lean and Agile
Lean is a methodology that emphasizes the efficient use of resources and the elimination of waste to create more value for customers. In an agile environment, Lean principles can be applied to software development to streamline processes, reduce lead times, and improve overall efficiency.
One key aspect of Lean in an agile environment is the focus on continuous improvement. This means regularly identifying and eliminating waste, such as unnecessary meetings or redundant tasks, to create a more streamlined and efficient workflow.
Another critical aspect of Lean in an agile environment is the emphasis on customer value. This means constantly seeking customer feedback and using it to prioritize and guide development efforts. This helps ensure that the end product is something that truly meets the needs and wants of the customer rather than just being a product that the development team thinks is the best.
Lean also places a strong emphasis on team collaboration and cross-functional teams. This allows for faster decision-making, problem-solving, and a more holistic understanding of the development process.
In summary, Lean is a methodology that emphasizes efficiency and customer value and can be effectively applied in an agile software development environment to improve processes and create a more efficient workflow.
One example of how Lean principles have been applied to improve software delivery efficiency is using Kanban boards. A Kanban board is a tool that allows teams to visualize the flow of work and identify bottlenecks or areas for improvement. The board typically includes columns for different stages of the development process, such as “To Do,” “In Progress,” and “Done.” At my organization, we use “Backlog,” “In Progress,” “Testing,” and “Completed”
By using a Kanban board, teams can easily see where work is piling up and identify areas where they need to focus their efforts to improve flow. For example, if the “In Progress” column is consistently entire, the team may need to focus on reducing the amount of work in progress to speed up delivery.
In addition, using a Kanban board can also help teams to limit work in progress and focus on finishing tasks before starting new ones, which is a crucial principle of Lean. This allows teams to avoid multitasking and context-switching, which can lead to wasted time and effort.
Another example of how Lean has been used to improve software delivery efficiency is the “pull system”. Instead of having the development team push out new features to the customer, the customer pulls the features they want. This allows the development team to focus on what the customer truly needs and wants and also allows for faster delivery and more efficient use of resources.
In summary, using Kanban boards and the Pull system are examples of how Lean principles have been applied to improve software delivery efficiency by visualizing workflows, limiting work in progress, and focusing on customer value.