The 12 Lean Principles for Software Development

All Posts
Share this post
Share this post

Vehicle manufacturer Toyota is credited with the original “lean” methodology to maximize efficiency and minimize waste. However, the lean methodology doesn’t just apply to vehicle manufacturing.

Lean practices are implemented in a variety of industries — especially software development. When applying lean on a development team, it’s important to know the different kinds of waste you may encounter so you can minimize it and make your team as productive as possible.

Here’s a look at the 12 kinds of waste every lean software developer should know.

What Is Lean Software Development?

Toyota began the lean process in the early 20th century. Known as the “Toyota Production System (TPS),” it’s made up of two parts: Jidoka and Just-in-time.

Jidoka: Translated from Japanese, Jidoka means “automation with a human touch.” It helps pinpoint any issues during production so they can quickly be solved.

Just-in-time: Make what’s needed only when it’s required, eliminating unnecessary production and waste.

As a whole, the “lean” process aims to:

  • Eliminate waste
  • Provide top quality
  • At the lowest cost

The first step to minimizing waste is identifying it. Then, your team can change practices to eliminate it.

The Eight Wastes of Traditional Manufacturing Lean

There are eight forms of lean waste (previously seven) as originally identified by Toyota. The eight forms of waste spell out the acronym “DOWNTIME”:

  1. Defects
  2. Overproduction
  3. Waiting
  4. Neglect of Human Talent (Unused talent)
  5. Transportation
  6. Inventory
  7. Motion
  8. Excess Processing (Over or extra processing)

The 12 Lean Principles for Software Development

As you apply lean methodology to software development, here are the different kinds of waste you may encounter.

  1. Planning Oversights

This principle corresponds with defects in lean manufacturing at the planning stage.

It’s important to clearly define plans, anticipate potential problems, and establish a game plan with solutions for any roadblocks your team may hit.

If you under-specify project requirements, this can impact implementation efficiency. Your implementation will not achieve project goals, and it will require rework — taking up valuable time that could be spent on other tasks.

Likewise, failing to anticipate key technical risks (and plan in advance how to mitigate them) can lead to significant, avoidable clean-up work.

Ensuring project requirements are clearly defined, anticipating key technical risks, and setting plans for managing and eliminating those risks are crucial to reducing planning oversight waste.

  1. Scope Changes

This principle corresponds to defects in lean manufacturing at the business requirements stage.

In addition to detailing requirements for a project, business stakeholders and product managers should properly plan what customers will value and expect, and conduct adequate market and user research before the project starts.

Not having a clear vision of what the company should achieve for customers or discovering that after the project starts can lead to changing requirements during the project — causing rework and waste.

To avoid this, ensure leaders think from the customer’s point of view:

  • What additional features would the customer want in a site or app?
  • Is the user interface of the site or app easily navigable?
  • What could make the experience better or more accessible for consumers?
  • What features should be available from the first implementation, and which can be added later?
  • Over-Planning

This principle corresponds to overproduction in lean manufacturing at the planning stage.

Just as providing too little detail on project requirements can lead to waste, providing too much detail can also lead to waste.

Including non-essential details in the architecture during the planning stage delays the start of implementation. Details can also change. Allow your team enough flexibility so that projects don’t get confused with too many micro-steps and later need to be reworked.

Another subtle waste caused by over-planning is that the planner may not be as much of an expert as the implementer when it comes to the details. An architect who specifies every nail hole may get worse results than a builder who figures it out on the job based on higher-level plans.

Ensure your engineers have a clear roadmap, but allow them to figure out the specifics to work as efficiently as possible

  1. Preventable Software Defects

This principle corresponds to defects in lean manufacturing at the implementation stage.

If you have to spend time finding and fixing a bug (or other problem) that could have been prevented with less effort (e.g., through better testing), this creates waste that would not have been there if you had created the software defect-free in the first place.

Software defects can include bugs, but it’s not limited to just that.

Preventable software defects also include:

  • User experience problems
  • Performance issues
  • And more

The longer it takes to fix these issues from the time they appear, the more waste you’ll have.

  • Developers will have to take time to re-adjust as they go from fixing the bugs to other tasks.
  • Even after fixing the code, engineers may have to rewrite other code that’s written on top of the bug.
  • And, customers may get agitated as they encounter problems from the bug — leading to support tickets and more waste.

If you can prevent software defects with better systems, improved processes, or tools for quality assurance, they’re a worthwhile investment. Failing to invest in these systems and tools will result in waste that causes lost time and money.

  1. Technical Debt

This is a new principle not initially included in the eight wastes of lean manufacturing.

If a tool becomes available that could lessen the amount of time it takes to do a task, you should evaluate whether to invest in it.

Say that tool would take the time a task takes from two hours to one hour. If you fail to adopt that tool, you’re taking an extra hour to do that task that could now be done in just one.

As soon as that tool becomes available, the extra hour is no longer required to create value for customers. That hour instead becomes more like a debt payment against the money saved by not investing in the new machine.

The time lost by not keeping up-to-date with technology is often referred to as “technical debt.”

However, in software development, it’s not always a tool that makes processes more efficient. It can include a:

  • System
  • Method
  • Other best practice

Failing to adopt these time-saving tools, methods, or other practices results in technical debt and waste.

Even if it requires updating how your team operates or communicates, be sure to keep your software developers up-to-date on the best systems, methodologies, and tools to avoid unnecessary technical debt.

  1. Over-building

This principle corresponds directly to over-processing in lean manufacturing.

The biggest type of waste emphasized in The Lean Start-up, over-building involves delivering software at a higher level of quality or functionality than customers are willing to pay for.

Why include lots of added bells and whistles if the demand isn’t there? In software development, this leads to time spent on features, processes, elements of the user interface, and general website or app functions that a customer doesn’t want or need.

If there’s not a demand and customers aren’t willing to pay for it, it’s not worth it to spend the time building it.

Instead, spend time on software and features that customers actually want to minimize waste.

  1. Wait Time

This principle corresponds directly to waiting in lean manufacturing.

Wait time occurs when:

  • No one is working on the project while waiting for the next available resource or automated task to be completed. A resource may include another person or a system with limited capacity.
  • People could be working on the project in parallel, but it’s not broken down and scheduled to allow that to happen due to poor planning.

When the time to complete projects increases:

  • The value to customers decreases.
  • The overhead from conflicts between parallel work-in-progress goes up.

Merge conflicts,” as they’re called, can also be especially troublesome for software projects because parallel code changes often need to work together in the same code base. This means that the negative impact of wait time waste can be even larger than that of physical manufacturing.

Avoid wait time waste through proper scheduling, prioritization of projects, and adjusting dependent tasks as necessary.

  1. Inventory

This principle corresponds directly to inventory in lean manufacturing.

Inventory and wait time are strongly correlated, and where you have one, you’ll likely have the other. In software development, inventory is the volume of projects in progress at various stages.

If you have more inventory than necessary, this can make it take longer before you can start on new projects, slowing down time to market. It also leads to all the problems described above with wait time.

Avoid having more projects in progress at once than is necessary to reduce inventory waste.

  1. Hand-offs

This principle is analogous to transportation in lean manufacturing.

Hand-offs from one person to another have significant overhead when it comes to software projects.

Consider the time required to coordinate schedules, translate information, have meetings, explain what’s going on, and answer any questions. This takes away from valuable time that could be spent on other tasks.

Not only does it lead to wasted time for both parties involved in the hand-off — you also run the risk of miscommunications and losing information. This may result in the person the project is handed off to taking the time to re-learn the project, or worse — bugs being created that take even more time to fix down the line, all due to a misunderstanding and loss of information.

To limit waste from hand-offs, reduce the amount of back-and-forth between people on a project.

Also, have fewer specialized functions. One way to limit specialized functions is to have developers do their own quality assurance rather than having a separate person designated to do all quality assurance.

  1. Context Switching and Interruptions

This principle is analogous to motion in lean manufacturing.

Waste can not only result from wait time or hand-offs — an individual can be slowed down if they are interrupted in the middle of deep work and have to switch between tasks.

One report from Cornell University’s Ellis Idea Lab and Qatalog found that when switching apps, it takes workers nine and a half minutes to get back into a workflow. If you account for workers going between multiple meetings throughout a day, constant communications, and more, it’s easy to see how context switching can contribute to waste.

Interruptions can encompass everything including escalated customer requests, urgent questions from team members, meetings that another team member adds to their calendar, outages, and more.

This can break up the engineer’s workflow, taking up time as they have to:

  • Physically open up different work tools and programs or respond to team member or customer requests
  • Mentally adjust from going from one task to another

As engineers go from one task to another, this context switching can contribute to hours of waste throughout the day.

While this overhead is less than when projects are handed off from person to person, the ramp-up time required from picking up and putting down tasks can lead to forgetting crucial information — resulting in more bugs.

Help keep your team focused on important tasks so they aren’t constantly switching from one task to the next, and they can get into their most productive workflow. For example, try to avoid scattered meetings that would frequently interrupt engineers and encourage individuals to set aside time for non-urgent questions so your team can stay focused.

  1. Misallocated Talent

This is loosely related to unused talent in lean manufacturing but is different because it is about work allocation.

Humans are far more complex than machines — they are flexible and adaptable. Their talents and capabilities to perform different tasks may be hard to understand in advance. Instead, it may take time to learn individual engineers’ unique strengths and where their skills are best allocated.

Waste from misallocated talent comes from when work could be done more efficiently if it were assigned to different people. Play on your team member’s unique strengths and consider where you can best use engineers’ talents on various projects.

This doesn’t always mean projects should be assigned to those who can complete them the quickest. Instead, strategize project assignments by who can minimize bottlenecks on the most critical resources.

For example, this could mean delegating less difficult tasks to more junior engineers, even if that makes those tasks take longer.

  1. Low Morale

This principle is also not originally included in the eight wastes of lean manufacturing, likely because knowledge work is more sensitive to a worker’s disposition than manufacturing work, and because machine under-maintenance is not a common problem.

A 2021 Gallup report found that teams with low engagement have a productivity rate that’s 14% to 18% lower than highly engaged teams. And teams with low engagement rates have turnover rates 18% to 43% higher than those with high engagement.

This is not to mention the cost of employee turnover — replacing workers costs 50% to 200% of the employee’s salary. On the whole, employee burnout and low morale can be devastating for a company.

The quickest way to burn out employees, leave them feeling unmotivated, and create waste that results from their low morale is to under-invest in their needs outside of their direct work. In manufacturing, machines (obviously) don’t have morale. However, failing to perform regular maintenance would lead to a similar outcome where the machine’s performance suffers.

If employees’ needs are not met outside of the tasks they’re doing day-to-day, they’ll feel underappreciated, and their productivity will reflect that.

For example, if you fail to provide a career development path tailored to individuals’ goals, they’ll be left wondering what their future is at the company.

  • Will they be in the same role 5 or 10 years from now?
  • Are there any opportunities for upward mobility?
  • What if an engineer wants to move from being a software developer into a management role?
  • What if an engineer wants to join a different sub-team of software development?

If you don’t give engineers a clear path tailored to their independent goals, they may become less engaged with their work and spend time considering other job opportunities. Lack of competitive compensation can have the same outcome.

Take time to have one-on-one meetings with each engineer and learn what their independent goals are. Then, make it a point to check in periodically, reassess their current role in the context of those goals, and give feedback. Also, ensure you compensate them accordingly with competitive market rates and job performance so that they don’t have to spend time wondering about other opportunities.

The Bottom Line

When practicing lean methodology, the key to improvement is to be aware of all the different kinds of principles you may encounter.

Whether it’s related to over- or under-planning, wait time, technical debt, or low morale, the easiest way to reduce waste is to identify it and create a plan to minimize it on your own team.

Take advantage of tools like minware that give a complete overview of the software development life cycle and help reduce waste from defects and process inefficiencies.

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