Lean software development is an implementation of lean manufacturing principles and practices in the software development domain. It was actually adapted from the Toyota Production System. It can be summarized by seven principles:
- Eliminate waste. Waste means anything not adding value to the customer. It may include unnecessary code and functionality, unclear requirements, or delays in software development processes.
- Amplify learning. This is the best approach for improving a software development environment. The learning process can be sped up by using short iteration cycles, and by involving the customer early and often. Inspecting the product and processes often and then adapting immediately to those inspections also amplifies learning.
- Decide as late as possible. Delay decisions until the last responsible moment so that they are based on facts and not on uncertain, outdated assumptions and predictions.
- Deliver as fast as possible. The sooner the end product is delivered, the sooner feedback can be received for the next iteration.
- Empower the team. Don’t micro-manage. Encourage autonomy, mastery and purpose.
- Build integrity in. Correct defects early. Use test-first development practices. Break down dependencies.
- See the whole. Solve problems, not symptoms. Deliver a complete product. Think long-term.