What is Lean Software Development?

All Posts
Share this post
Share this post

Lean methodology was originally used in vehicle manufacturing — but it’s now an increasingly popular methodology in software development.

But what exactly is lean software development?

Here’s what companies need to know about implementing lean software development on their teams.

What Is Lean Software Development?

Lean software development comes from a set of principles outlined in The Toyota Way that originate from the Toyota Production System. In 2003, the book Lean Software Development: An Agile Toolkit made the first attempt at translating those principles to software engineering.

The original Lean Software Development book recommends a lot of specific practices, but the key principle from which all others derive is value stream mapping. Value stream mapping looks at a project timeline and highlights only activities that directly add value for the customer. 

Everything else is waste and could theoretically be eliminated, including:

  • Rework caused by bugs and other defects
  • Discarded work due to changed plans/requirements
  • Features that customers don’t care about
  • Time spent waiting for a resource (e.g., Waiting for the QA team to be ready for testing)
  • Context switching between tasks and interruptions, meetings, or other tasks
  • Hand-offs between people
  • Slowdowns caused by technical debt

4 Lean Software Development Principles

For companies to successfully implement lean software development methodology, they should know the basic principles. The primary principles of lean software development include value stream mapping, continuous improvement, and elevating problems through the andon mechanism.

1. Value Stream Mapping

Also sometimes referred to as “VSM,” value stream mapping uses diagrams and symbols to show the complete information and material flow needed to deliver a product to a consumer. 

It details all steps and actions needed to get a product from its idea stage into a customer’s hands — and in the case of software development, at a consumer’s fingertips and on their screens. Again, it details only what adds value for the consumer.

There are two important parts to value stream mapping: Current state map and future state map.

Current State Map: This shows the current state of your product and documents any existing problems with the current flow of information and materials.

Future State Map: This shows the idealized flow of information and materials you want on your team.

When implemented over time, value stream mapping helps your team identify where waste occurs and how to improve efficiency to give the consumer the final product they value.

2. Continuous Improvement

Lean is founded on kaizen, the idea of continual improvement. Continuous improvement is exactly what it sounds like — making improvements on a regular basis.

In a lean methodology specifically, continuous improvement comes through:

  • Identifying problems
  • Solving problems
  • Implementing changes that improve systems

Value stream mapping plays a large role in continuous improvement, as it helps give teams powerful data that they can assess to evaluate where changes should be made.

However, these changes aren’t necessarily large. In fact, with lean, these changes are meant to be small, yet incremental. Teams work together to assess problems and processes and improve them.

These changes are also meant to be sustained over time, so they have a lasting positive impact on software development team systems.

3. Elevating Problems Through the Andon Mechanism

The Japanese term for “lamp,” andon highlights processes and elevates problems as they arise. It alerts the team leader of problems so they can be solved with minimal interruption.

In a vehicle manufacturing setting (where andon began):

  • A team member would pull a rope, setting off a light that indicates an issue.
  • Work begins to solve the problem immediately.
  • As this happens, people at other work stations can continue working, and the belt keeps moving.
  • If the problem is solved before the end of a cycle time, everyone resumes working as normal.
  • However, if the problem is not resolved within that time frame, the belt will halt.

Andon allows others to keep working and only halts the belt if an issue is not resolved within a cycle. This provides minimal interruption for people at various workstations.

The process is similar in software development — teams are alerted of an issue so they can develop a plan to solve it, and the rest of the team can continue working on other issues as necessary. It minimizes interruptions and helps keep working conditions the same for those not directly affected by the issue.

Software management tools can play a key role in alerting teams of problems as soon as they arise.

When teams are alerted of problems with the andon mechanism, they can solve them in a way that interrupts other processes as little as possible — but still gets the issue resolved quickly.

4. Lean Waste

After understanding the important principles of lean software development, teams should be mindful of the kinds of waste they may encounter.

One of the primary aims of lean methodology in software development is to minimize waste, so it’s important for them to know the different kinds. Once teams know the types of waste they have on their team, they can develop ways to make their developers and systems more efficient. More on that later. 

3 Benefits of Lean Software Development

1. Analyze Your Business in Absolute Terms

With value stream mapping, continuous improvement, the andon mechanism, and identifying waste, lean gives you a complete overview of the software development lifecycle. It shows you where your downfalls are and how to become more efficient.

Other methodologies tend to focus on efficiency relative to historical trends, or compared to other organizations. This can be helpful, but it will only take you so far. Lean, however, can take you the rest of the way.

2. Identify Opportunities to Improve Through Reducing Waste

With lean, as you analyze your business, flag problems, and identify waste, this reveals gaps where your team has an opportunity to reduce it.

You can implement new systems, methodologies, and tools that help your teams work smarter,  — not harder — and with less rework. Your team learns to continually adapt, picking up new skills and implementing new systems and tools as necessary.

This is a great time-saver and investment in your team’s skills, as your developers spend less time rewriting code and more time learning to create software that works efficiently in the first place.

3. Deliver Value for Customers at the Lowest Cost

In software development, other methodologies can fall into the trap of being a process for the sake of process — not because it’s delivering real value. Lean, however, is fully aligned with the business goal of delivering value for customers at the lowest cost above all else.

As you focus on what customers value, reduce waste, and elevate problems with the andon mechanism, this allows you to deliver a top-quality product (app or website) at the lowest cost. You continually identify opportunities to implement new systems that make your software and team more efficient.

Additionally, it forces your team to focus on only what’s essential and wanted by customers — instead of spending time on unnecessary features.

Lean Software Development: 12 Types of Waste

Because one of the main functions of lean is to produce a product with the least waste possible, software development companies that want to operate successfully in this framework need to be aware of the 12 kinds of lean waste in software engineering.

The 12 kinds of lean waste software development teams need to know include:

  1. Planning Oversights: Under-specifying project requirements and failing to anticipate and plan how to mitigate key technical risks can lead to significant, avoidable clean-up work.
  2. Scope Changes: Failing to anticipate what customers will value and expect in a project can lead to changing requirements and rework during projects.
  3. Over-Planning: Just as under-planning can cause problems, giving too much non-essential detail can delay the start of implementation and lead to rework down the line.
  4. Preventable Software Defects: Bugs, user experience problems, performance issues, and more can all lead to rework that wouldn’t be necessary if the software had been defect-free in the first place.
  5. Technical Debt: Failing to adopt tools, systems, methods, and best practices that reduce the time it takes to do a task as they become available creates technical debt (time no longer needed to complete a task if that tool, system, etc. were used).
  6. Over-building: Delivering software at a higher functionality or quality level than consumers are willing to pay for is not worth the time it takes to build those features.
  7. Wait Time: When no one is working on a project while waiting on another available resource or automated task, or a project is not broken down and scheduled to allow multiple people to work on it in parallel, it leads to unnecessary loss of time.
  8. Inventory: If more projects are in progress at once than is necessary, it can slow down the overall time to market.
  9. Hand-offs: Moving tasks from one developer to another can lead to miscommunications, wasted time explaining what’s happening, and more. This can all lead to wasted time and loss of information, which may result in more bugs than if there were less back-and-forth on projects.
  10. Context Switching and Interruptions: Constant meetings, questions in team messaging platforms, and more can all take up hours of a day. With these interruptions, developers have to pause what they’re working on and physically and mentally switch from task to task.
  11. Misallocated Talent: Tasks should be delegated to whoever can complete them the most efficiently, with the fewest bugs and the littlest amount of rework. Don’t assign tasks to certain developers just because they’ll be completed quickly.
  12. Low Morale: Failing to give developers engaging work, help individuals reach their career goals, schedule regular check-ins, and compensate them accordingly can all lead to burnout. Team members may also search for other job opportunities. They’ll also be less engaged with their day-to-day tasks, taking projects longer to complete.

Once companies have a thorough understanding of the different types of lean waste, they modify their practices and reduce it on their teams. Learn more about the 12 types of lean waste here.

What Is the Difference Between Agile and Lean Software Development?

Agile has revolutionized the software industry during the 21st century and replaced waterfall as the predominant method of software engineering. More recently, The Lean Startup transformed how people think about efficiently developing new technology products.

The key differences between agile software development vs. lean are:

  1. Agile Emphasizes Delivery, Lean Emphasizes Value
  2. Agile Prioritizes Speed, Lean Prioritizes Quality
  3. Agile Hides Process Problems, Lean Exposes Them
  4. Agile Ignores Technical Debt, Lean Highlights It
  5. Agile Neglects Long-term Planning, Lean Doesn’t

The good news is that lean enhances agile rather than replacing it (like agile replaces waterfall), so you can incrementally add elements of lean without having to make major changes.

The Bottom Line

Trial and error is sometimes inevitable in software development — but lean software development helps companies minimize waste and work the most efficiently.

Knowing the benefits, key principles, and types of waste software developers may encounter in lean methodology will help them successfully complete projects with minimal rework.

Engineers First
Measure the business impact of things that slow down engineering