The Principles of Lean Software DevelopmentPosted by BrainConcert
Lean Software Development represents a concept initially advocated by Mary and Tom Poppendieck in their own Implementing Lean Software Development: From Concept to Cash, which derives from lean manufacturing, a process management philosophy (and practice) developed by Toyota to transform their approach in building cars.
Mary & Tom show how the seven principles of lean manufacturing can be applied to optimize the whole IT value stream. These principles are:
1. Eliminate waste
Lean strongly advocates to identify and eliminate any activity that doesnt add value (waste). Some of the most important sources of waste in software development are: unnecessary code or functionality, starting more than can be completed, delay in the software development process, unclear or constantly changing requirements, bureaucracy, slow or ineffective communication, partially done work, defects and quality issues, task switching.
2. Build quality in
The process should not allow defects to occur in the first place, but when this isnt possible one should identify the defects as earliest as possible. Agile practices which build quality into your process include TDD (Test-Driven Development) and pair-programming.
3. Create Knowledge
Learning is essential. it is essential to develop and implement practices that help the team understand what they need to do, how they are doing it and work on it to improve. Practices like pair-programming, code reviews, documentation, wiki, knowledge sharing sessions, trainings, etc. help creating and sharing knowledge in the team;
4. Defer commitment
As no complete specifications can be available up-front to create a state-of-the-art design, software development should be based on flexible architectures that are change tolerant and by scheduling irreversible decisions to the last possible moment. Frequently, deferring commitment requires the ability to closely couple end-to-end business scenarios to capabilities developed in multiple applications by multiple projects.
5. Deliver quickly
By limiting the work of a team to its capacity and performing the work in iterations, one can establish a reliable and repeatable flow of work. Constraining the team to delivering potentially shippable solutions on a regular basis motivates them to stay focused on continuously adding value.
6. Respect people
Sustainable advantage is gained from engaged, thinking people; implement strategies that focuses on motivating and enabling IT teamsnot on controlling them.
7. Optimize the whole
Always look at the bigger picture; understand the high-level business processes that individual projects supportprocesses that often cross multiple systems. Sometimes interrelated systems are involved in delivering a complete product to the stakeholders.