Lean Software Development - BogdanViblyy/Buketov GitHub Wiki
Lean is a philosophy and set of principles aimed at maximizing customer value while minimizing waste. It originated from the Toyota Production System and was adapted for software development by Mary and Tom Poppendieck.
Lean is not a strict methodology like Scrum, but a mindset that can be applied to any process.
The 7 Principles of Lean
-
Eliminate Waste: Identify and remove anything that does not add value to the customer. Common forms of waste in software include:
- Partially done work
- Unnecessary features or code
- Task switching
- Defects and rework
- Waiting (e.g., for approvals, for code to build)
-
Amplify Learning: Software development is a process of discovery. Use short iterations, feedback loops, and experiments to learn and adapt quickly.
-
Decide as Late as Possible: Delay decisions until you have the most information possible, but not so late that they cause a problem. This preserves flexibility.
-
Deliver as Fast as Possible: Deliver a valuable product to the customer quickly to get feedback and start generating value sooner. This focuses on small batch sizes and a short cycle time.
-
Empower the Team: Give the people doing the work the authority and autonomy to make decisions. Trust them to do their job well.
-
Build Integrity In: Ensure the system has high quality and value from both the customer's perspective (perceived integrity) and the technical perspective (conceptual integrity).
-
See the Whole: Optimize the entire value stream, from idea to delivery. Don't let one part of the process become a bottleneck.