Lean Software Development: Eliminating Waste in Software Engineering

DZone 's Guide to

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.

· Agile Zone ·
Free Resource

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.

agile methodologies ,lean ,lean development ,software principles ,waste elimination

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}