Lean Software Development
Obsidian Help
Definition
It is an approach to building software the focuses on maximising value while minimising waste.
It was adapted from the principles of Lean Manufacturing used by companies like Toyota Motor Corporation.
Important
Deliver exactly what the customer needs, with minimal waste, as quickly and reliably as possible.
Principles
Eliminate Waste
Anything that does not add value is considered waste.
Examples
Unnecessary features, partially done work, excess documentation, task switching
Build Quality In
Quality is not a final step, it is integrated into the process. This is done using TDD, CI and automated testing.
Create Knowledge
Software development is a learning process.
Short iterations Prototyping Feedback loops
Defer Commitment
Make decisions as late as possible but not later. This is because we make better decisions with more information.
Deliver Fast
Fast delivery reduces risk, improves feedback and increases adaptability. This aligns with iterative approaches like Agile.
Respect People
Developers are not resources, they are decision-makers. This encourages collaboration, autonomy and knowledge sharing.
Optimise the Whole
Don't optimise individual parts, optimise the entire system.
Example
Improving coding speed means nothing if deployment is slow.