Lean Software Development: Eliminating Waste in Software Engineering
Lean software development is all about getting rid of the extra and unnecessary. Right in time for spring cleaning.
Join the DZone community and get the full member experience.Join For Free
According to the latest estimates, seventeen percent of organizations adopt Lean. This framework remains one of the five most widely used Agile frameworks. The application of Lean principles to software development was initially introduced by Mary and Tom Poppendieck in their book Lean Software Development: An Agile Toolkit. It includes the 7 basic principles:
- Eliminate waste
- Amplify learning and create knowledge
- Decide as late as possible
- Deliver as fast as possible
- Empower the team
- Build integrity/quality in
See the whole
7 Principles of Lean Software Development
1. Eliminating Waste
In terms of a project, the term “waste” refers to anything that is not adding the value to the project and thus should be eliminated. In software engineering, this can be idle time, unnecessary features, or defects.
2. Amplify Learning and Create Knowledge
In Lean, software development is perceived as an ongoing learning process. Developers don’t usually write clear code on the first try. After having detected and fixed errors, they write an improved variation of the previous code. Engineers gain knowledge during development by solving problems and producing code variations. Therefore, the best way to improve the software development environment is to amplify learning.
3. Decide as Late as Possible
Late decisions are more informed ones because they are based on facts. Keeping in mind that technologies become obsolete increasingly faster; delaying an irreversible design decision is a wise move. A major strategy for making commitments late is to reserve the capacity for the change in the system.
4. Deliver as Fast as Possible
The fourth principle is about the pros of fast software development. Short development cycles allow developers to learn more by getting feedback. They also allow a customer to delay making a final decision about design until they know more. So, fast delivery helps eliminate waste.
5. Empower the Team
Developers should have the right to make technical decisions as they understand the details of their work like no one else. They can create a roadmap and follow it.
6. Build in Integrity/Quality
The user’s perception of the software and its characteristics must coincide. If a customer thinks that software has all the needed features and is easy to use, that system has perceived integrity. Conceptual integrity means that the software has a coherent architecture, and scores high on usability and fitness of purpose. It can be maintained, adapted, and extended.
7. See the whole
Engineers should take charge of the overall efficiency of the system, instead of focusing on their small portion. If experts adhere to this principle, they can create a system with integrity.
These fundamentals perfectly describe Lean philosophy: its aim is to deliver more value through less effort, investment and time.
Lean software development is an iterative and incremental framework. Therefore, as in any other Agile approach, the working product increment is delivered at the early stages of development. Further progress depends largely on the Product Owner’s feedback.
What differentiates Lean approach is that the team is not restricted to use any formal processes, such as recurring meetings or thorough task prioritization.
When to Use Lean Development Methodology
Lean allows companies to follow a Minimum Viable Product (MVP) development technique. It includes a deployment of a product with a minimum, sufficient set of features to satisfy early users. The idea of the MVP strategy is to gather and analyze customer feedback to know if they like this product and want to buy it. Knowledge of customers’ habits, tastes, and needs is the key to producing commercially successful products. Developers use feedback to create a roadmap for future development. Since it is best suited for startups, many app development companies follow a Lean Agile methodology to deliver applications to their startup clients.
Lean works well for small, short-term projects due to their short life cycles. This approach is also appropriate if the customer can participate in a project realization as Lean requires ongoing feedback. Another important condition to the adoption of Lean is the whole team should work in one office to enable communication. Startups and successful companies apply Lean software engineering practices to their processes.
Opinions expressed by DZone contributors are their own.