As already discussed in the previous article ‘Efficient and Customer-Oriented through Lean Management‘, historically, all Lean approaches have emerged or evolved from Lean Production (keyword: Toyota Production System) – including the Lean Management methodology, which is considered a leadership and organizational concept. The lean corporate management approach aimed for is a comprehensive concept that affects a multitude of activities and should be established within the structures of the entire company. Therefore, in the course of further generalization and adaptation of Lean approaches, further developments of Lean Production have emerged.[2] Among many other business areas, a Lean approach also developed in software development – Lean Software Development.
What is Lean Software Development?
As experiences in production, operations, and logistics show, lean processes can deliver the highest speed, highest quality, and lowest costs in a competitive environment. The Lean approach thus represents a better way to deliver products. Mary and Tom Poppendieck have therefore transferred the principles and practices from the production environment to software development. This also involves eliminating waste. In software development, the main cause of waste is long feedback loops, i.e., endlessly repeating internal coordination, which leads to delays in software projects. Conversely, shortening feedback loops leads to higher speed and quality at lower costs.[3]
Principles of Lean Software Development
The Toyota Production System and the Toyota Product Development System are the underlying principles of Lean Software Development, which are outlined below:
The seven fundamental principles in Lean Software Development based on Poppendieck and Poppendieck
- Eliminate Waste: Additional features are considered waste according to the principles. The goal is to focus on the 20 percent of features that make up 80 percent of the value. Deviations are also waste. A need deviation is, for example, the result of too early specification, just as late tests are the reason for test and correction cycles.
- Build Quality In: If errors are routinely detected in the verification process, the process is faulty. Quality should be implemented through error-proof code with test-driven development. Additionally, only code that contains automated unit and acceptance tests should be produced (legacy code). New code is also continuously integrated.
- Create Knowledge: Learning is an essential component, which is why teams should be able to use scientific methods to implement the best alternative. At the same time, standards/norms should be questioned and constantly improved, with known and currently best practices always being embodied in standards. Furthermore, organizations should react quickly to the future and be driven by feedback rather than planning with predictions about the future.
- Defer Commitment: This is about accepting that development cannot begin only when the specification is complete. Instead, the system architecture should support adding any features and thus resolve dependencies. Additional options are always kept open, and code is viewed as an experiment and change-tolerant. Moreover, irreversible decisions should be made at the last responsible moment accordingly.
- Deliver Fast: Companies that compete based on speed have a significant cost advantage, deliver superior quality, and are more aligned with their customers’ needs. Focusing on full utilization leads to congestion. Therefore, cycle times should be shortened and small batches delivered. This means fewer things are in progress simultaneously, resulting in lower actual utilization. Work volume should also be limited to the team’s capacity and adjusted to delivery capabilities.
- Respect People: Committed, thinking people offer the most sustainable competitive advantage, which is why teams should be characterized by values such as pride, commitment, and trust. Effective teams have effective leaders who bring out the best in the team.
- Optimize the Whole: Good products result from a unique combination of opportunities and technology. Therefore, the focus is on the entire value stream and the delivery of a complete product, which can only be developed by complete teams. Actions can then be taken accordingly by measuring process capability, team performance, or customer satisfaction.
These principles are primarily to be seen as guidelines for delivering software faster, better, and more cost-effectively.
Conclusion
Lean Software Development, like Lean Management, has the principles of Lean Production at its core. The focus is on eliminating any kind of waste, errors, or unnecessary costs. At the same time, it aims to achieve optimal quality.
Since Lean Software Development is not about strict rules, but rather guidelines, they can be adapted and implemented individually for each company and tailored to the respective project. This approach enables an improvement in project efficiency and process optimization.
[1] cf. Brunner, Franz J.: Japanese Success Concepts: KAIZEN, CIP, Lean Production Management, Total Productive Maintenance, Shopfloor Management, Toyota Production Management
[2] cf. Schwickert, Axel C.; Ostheimer, Bernhard; Eroglu, Murat: Kaizen, TPM, Lean – Basics, Differentiation, Connections, in Working Papers WI, No. 4/2011
[3] cf. Poppendieck and Poppendieck[/artikel_text]
Adrian Liepert
He has several years of consulting and transaction experience and supports the buy&build and growth strategy of the digatus Group as an M&A Manager. Adrian Liepert holds a Master's degree in Mergers & Acquisitions (LL.M.) from the Frankfurt School of Finance & Management and completed the Durham-EBS Executive MBA.