Software Quality.com

Lean software development

By Ben Lutkevich

What is Lean software development?

Lean software development is a concept that emphasizes optimizing efficiency and minimizing waste in the software development process. This approach has its roots in the Lean manufacturing movement of the 1980s. However, it is now considered an integral part of the Agile software development methodology.

Lean thinking can also be applied in other disciplines. Lean management is one example of this.

What are the 7 principles of Lean software development?

The main concept behind the Lean development methodology is that efficiencies can be applied, and waste can be managed at all levels of the process. These include at the individual level, as well as in departments, in interdepartmental operations, in the overall organization, and between the organization and its customers and suppliers.

The Lean software development process includes the following seven principles:

  1. Eliminate waste. After each development iteration, project managers discuss bottlenecks, identify waste and develop a plan to eliminate it. The Lean philosophy has a broad definition of waste that includes anything that doesn't add value to the product. Some examples are the following:
    • unnecessary code or software features;
    • more tasks than can be completed in the task log;
    • bureaucratic processes; and
    • quality issues.
  2. Build in quality. Various tactics are used to ensure quality is built into the Lean process, such as pair programming and test-driven development.
  3. Amplify learning. Knowledge one software engineer gains must be shared with every engineer on the software development team. This occurs through code review and sharing at meetings. Also, engineers learn as they go and question assumptions.
  4. Delay commitment as long as possible. The goal is to experiment and learn as much as possible before committing to irreversible decisions. Developers incorporate features and functionality as late as possible in the process to prevent having to redo work as the market changes.
  5. Deliver fast. Developers launch a product quickly, receive customer feedback fast and use that feedback to create a strategy for improvement. The idea behind this approach is to fail fast and learn from the results. This strategy contrasts with other methodologies used to design complex products. They often take a lot of time and still end up failing.
  6. Respect people. Respect is the basis for a productive, collaborative atmosphere. Lean encourages healthy conflict, proactive communication and constant feedback.
  7. Optimize the whole. The team examines the process from start to finish to make the Lean value stream as efficient as possible. It contrasts with the concept of suboptimization, where subpar code is generated faster than it can be tested for the sake of speed and software testers are overloaded.

What is the difference between Lean development and Agile?

Lean and Agile principles have much in common. When comparing Lean and Agile, experts often point to the similarities rather than the differences. Lean and Agile work together so seamlessly that it's difficult to tell them apart. They are sometimes referred to in tandem as Lean-Agile.

The last three Lean principles highlight some of what the Lean methodology has in common with Agile. In both cases, the product development team sets the pace and is responsible for delivering the product. Agile teams do this using the sprint methodology. And Lean's "optimizing the whole" principle is similar to the Agile retrospective, where team members gather after a project's completion to discuss successes and challenges.

There are some subtle differences between the two processes. Lean focuses on building better processes, while Agile's focus is to build better products. Agile practices seek to create products that meet consumer needs and expectations, and Lean is one way to achieve that goal.

Lean is often counted as one of several Agile frameworks -- Scrum and Kanban are two others. The Agile methodology is detailed in the Agile Manifesto, which contains a set of values and principles that guide the Agile frameworks.

What are the benefits of Lean software development?

Some of the advantages of Lean are the following:

What are the challenges of Lean development?

These are some of the challenges of Lean software development practices:

The history of Lean development

The Lean manufacturing concept emerged in the mid-20th century out of a production process Toyota developed as part of its Toyota Way philosophy. Lean manufacturing aimed to reduce product defects, cut out waste, increase productivity, and encourage accountability and innovation. The approach eventually spread to other industries.

Mary and Tom Poppendieck used the term Lean software development in the book they published by the same name in 2003. It applied the seven Lean principles to software engineering and the development process.

Learn about the secrets to succeeding with Lean software testing.

06 Dec 2021

All Rights Reserved, Copyright 2006 - 2024, TechTarget | Read our Privacy Statement