Lean Thinking Principles
Lean was developed by Toyota for the manufacturing world. Lean is a methodology that focuses on minimizing waste and ensuring continuous flow of output. Doesn't that sound a lot like the goal of Agile practices? Agile Project Management was created to reduce waste and increase productivity in software development. Let's take a closer look at the two with some examples of waste.
In manufacturing, waste could be defective products, rework, and time wasted while waiting for raw materials. In software development, waste could come in the form of developing features that users will not use or by utilizing developers inefficiently.These similarities are not surprising as Agile does borrow heavily from Lean Management. Now, let's look at how principles of Lean Management are used in Agile practices.
Agile practices use the following lean thinking principles:
- Reducing waste in software development
- Encouraging greater team ownership
Reduce Waste in Software Development
In software development, waste comes in various forms, such as:
- Producing extra features: This is usually caused by incorrect understanding of the client’s needs, which then carries forward to creating inaccurate scope statements and work breakdown structures (WBS). In Agile Software Development, this is resolved by having the client participate in Iteration Kickoffs. Therefore, only stories that provide value are created during an Iteration.
- Creating extra steps: For example, in an ecommerce site, this occurs if the checkout process is not optimized to enhance user experience. In Agile Software Development, developers take stories and code directly from them. All clarifications are taken directly from the client.
- Defects not caught by tests: One example of this type of waste is when inadequate testing is performed despite having a dedicated testing team. In Agile Software Development, test driven development is encouraged. Testing is not only restricted to the quality assurance team – rather, developers and customers also participate.
Encourage Greater Team Ownership
In traditional teams, coders do not participate in critical decision making, even if it involves the code that they have written. In Lean Thinking, people are at the heart of triggering and developing improvements. People are empowered to participate actively.
Agile practices are people-centric. Developers participate in key decision making. This is because developers are the people closest to the issues that arise. In Agile practices, people are encouraged to design their own processes and address complete problems. In addition, similar to Lean teams, greater focus is put on up-skilling developers so that they provide valuable inputs.
In an Agile environment, managers exist to support developers, not to tell them what to do. This is seen daily in the daily team meetings. Agile processes encourage individual and collective responsibility.