LEAN - MihkelPLoompuu/AgiilsedTarkvaraarenduseMetoodikad GitHub Wiki

What is LEAN?

Lean software development is a translation of lean manufacturing principles and practices to the software development domain. Adapted from the Toyota Production System, it is emerging with the support of a pro-lean subculture within the agile community. Lean offers a solid conceptual framework, values and principles, as well as good practices, derived from experience, that support agile organizations. image

What are the 7 principles of Lean software development?

  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.
  1. Build in quality. Various tactics are used to ensure quality is built into the Lean process, such as pair programming and test-driven development.

  2. 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.

  3. 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.

  4. 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.

  5. Respect people. Respect is the basis for a productive, collaborative atmosphere. Lean encourages healthy conflict, proactive communication and constant feedback.

  6. 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 are the benefits of Lean software development?

Some of the advantages of Lean are the following:

  • Collaboration. Lean principles amplify learning and respect to encourage collaboration and knowledge sharing and avoid bottlenecks. Teams are empowered to make their own decisions and work together in the decision-making process.

  • Continuous improvement. Lean includes what many call the modern software development process. The workflow incorporates constant communication with customers and steady feedback. This enables continuous improvement, or Kaizen, in all parts of the operation.

  • Efficiency. Demand for software is exploding, and companies cannot deliver apps fast enough. The Lean approach eliminates waste and delivers software fast, making development organizations more efficient and cutting cost.

  • Flexibility. The Lean methodology incorporates flexibility, while still prioritizing speed in the software development lifecycle. It leaves room for change and lets developers alter products based on continuous feedback.

  • Quality. Lean's efficiency, continuous improvement, flexibility and collaboration results in an overall improvement in product quality and an increase in customer satisfaction.

Info: