Skip to main content

Lean Principles

Updated Jun 12, 2020 ·

Lean Software Development

Lean software development is based on Lean Manufacturing principles, which are focused on minimizing waste and maximizing value to the customer. In its simplest form, Lean Software Development delivers only what the customers want. There are seven principles for lean:

  • Eliminate waste
  • Amplify learning
  • Decide as late as possible
  • Deliver as fast as possible
  • Empower the team
  • Build integrity in
  • Optimize the whole

Eliminate waste

To eliminate waste, you must be able to understand what waste is. Waste is anything that does not add direct value to the customer. There are seven wastes of software development:

  • Partially Done Work

    • Adds no value to customers.
    • Wastes time and resources.
    • Often becomes obsolete.
  • Extra Processes

    • Unnecessary paperwork.
    • Similar waste as partially done work.
  • Extra Features

    • Features not requested by customers.
    • Resources should focus on what customers need.
  • Task Switching

    • Time lost when switching tasks.
    • Wastes resources assigned to multiple projects.
  • Defects

    • Bugs lead to time-consuming debugging.
    • DefectS can cause a snowball effect with other features
    • Reduce overall software value.
  • Motion

    • Unnecessary movement of people wastes time.
    • Transfers of documents often lack crucial information.
    • If information is incomplete, the person needs to gather again.
  • Waiting

    • Delays in various stages are wasteful.

    • Examples of delays include:

      • starting the project
      • getting the right resources (staff)
      • getting the requirements from the customer
      • approvals of documentation
      • getting answers
      • making decisions
      • implementation
      • testing

Amplify Learning with Short Sprints

To be able to fine tune software, there should be frequent short iterations of working software. By having more iterations:

  • Developers learn faster
  • Customers can give feedback sooner
  • Features can be adjusted to bring more value

Decide as Late as Possible

Delaying decision-making in uncertain situations helps ensure choices are based on facts rather than speculation. This approach promotes flexibility in software development.

  • Decisions based on current facts minimize uncertainty.
  • Software can adapt to changes as they arise.
  • Waiting for more information leads to better outcomes.
  • Easier to adjust the software when new needs emerge.

Deliver as Fast as Possible

Delivering the software faster:

  • Enables customers to provide feedback
  • Enables developers to amplify learning
  • Gives customers the features they need now
  • Doesn't allow customers to change their mind
  • Makes everyone make decisions faster
  • Produces less waste

Empower the Team

Empowering team members is crucial for fostering collaboration and enhancing overall productivity and ownership in projects.

  • Team members should make decisions based on their expertise
  • Quick decision-making minimizes delays and streamlines workflow
  • Empowering individuals increases accountability and motivation

Build Integrity

Integrity in software development ensures that products not only meet customer needs but also maintain relevance over time.

  • Software must focus on fulfilling customer requirements
  • Continuous updates keep the software valuable for users

Optimize the Whole

Taking a holistic approach is essential as it emphasizes collaboration and ensures the overall success of the project.

  • Team members should consider the project’s big picture
  • Collaboration ensures all components work well together
  • Individual focus can detract from overall software quality