"Six Sigma" is a process man-agement strategy developed by Motorola in 1986 to improve the quality of products by identifying and removing the causes of defects (errors) and minimizing variability in manufacturing outputs. "Lean" on the other hand is a production practice that aims to eliminate expenses for resources that are not creating value in the product.
How do we combine Lean and Software especially since Lean Six Sigma has had its origins in manufacturing and does not translate easily to software development? The Poppendiecks in their book titled "Implementing Lean Software development" successfully make a case that writing software is really a form of product development and hence the implementation of Lean Six Sigma in software development is possible. They claim that, software not devel-oped as a stand-alone product is usually embedded in hardware, or it may be part of a game, or a business process - which means that software is either a product or a subset of a product.
"The seven principles" of Lean Software Development are:
- Eliminate Waste
- Build Quality In
- Create Knowledge
- Defer Commitment
- Deliver Fast
- Respect People
- Optimize the Whole
Identify the 20% of product features that deliver 80% of value to the customer. Focus on implementing the 20% for deployment in the first phase.
Build Quality In
Develop QA standards and QC processes to catch defects early on in the software development life cycle. Test-driven design (TDD) is a very effective to reduce and eliminate defects.
Use feedback from daily builds and early release of the minimum 20% feature set to customers for evaluation and feedback.
Define the architecture model such that most decisions related to the feature set can be reversed and changed. A realistic design approach is to leave options open so that irreversible decisions can be made as late as possible.
Deliver software so quickly that customers don't have time to change their mind", say the Poppendiecks.
Allow team members to offer feedback and ask questions. Just make sure you answer every question. You are not too busy and neither is any question unimportant that it does not deserver an answer. Employ team-building activities to help open the lines of communication and create co-dependence between members of the team.
Optimize the Whole
Lean software development needs the support of the entire organization. The entire value stream from the time a customer request comes in, to the time the software is delivered must be optimized.