The Principles of Lean Software Development

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 doesn’t 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 isn’t 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 teams—not on controlling them.

7.     Optimize the whole 

Always look at the bigger picture; understand the high-level business processes that individual projects support—processes that often cross multiple systems. Sometimes interrelated systems are involved in delivering a complete product to the stakeholders.

Reserve your spot now to the next Lean Course. Send in your application today and benefit of early bird subscription!