Lucid Bay Insights
If any of you have ever looked into Lean, you’ve probably come across the seven types of waste (Muda). And since Lean was originally developed for industrial manufacturing (Toyota), I initially found it difficult to figure out how these types of waste apply to software development.
Personally, an article on kanbanize.com helped me a lot a few years ago. After reading it, I collected more examples of waste and gradually categorized them. I came to the conclusion that such an overview would be useful for every Scrum Master (and not just them). If you think about the structure of the types of waste, it will be easier for you to identify instances of them in your teams.

Waiting is one of the most common yet least visible types of waste in software development. Unlike on a production line, where machine downtime is easily measurable, waiting in software development is hidden in email threads, ticketing systems, and “blocked” statuses. The team often doesn’t even know how much time they spend waiting; they perceive it as a normal part of the process. Yet waiting is the main cause of long lead times.
If you want to shorten delivery times, start by measuring where and for how long your requests are stuck.
In lean manufacturing, inventory is physically visible; it sits in the warehouse and ties up capital. In software development, inventory has a similar effect, but it is invisible. Every analysis sitting in a drawer, every piece of code waiting to be deployed, every license that no one is using represents invested labor and money that does not generate any value.
Moreover, inventory ages: an analysis completed six months ago may no longer reflect reality. The solution is to limit work in progress (WIP limit), deliver in smaller batches, and regularly review what you actually need.
Defects are the type of waste most teams are most familiar with: production errors, bugs reported by customers, and integrations that don’t work. Less visible but just as destructive is technical debt: poorly designed architecture, missing tests, or workarounds that gradually accumulate.
The key point is that the later you discover a defect, the more expensive it is to fix. A team that invests in continuous quality, code reviews, automated tests, and pair programming will save many times more than it invested.
In the Lean approach, overproduction is considered the worst type of waste because it causes all the others. In software development, this means creating features that no one needs or uses. Studies repeatedly show that a large portion of the features in software products are never actually used.
The causes often include a lack of customer feedback, the belief that “we know what the user wants,” and a reluctance to halt a project in which significant investment has already been made. The solution is to validate hypotheses before you start building and not be afraid to say “stop.”
In traditional manufacturing, handoffs involve the unnecessary movement of materials between workstations. In software development, they involve the transfer of information between people, teams, and systems. Every handoff carries the risk of lost context, delays, and misunderstandings.
A typical example is passing bugs back and forth between teams without deeper analysis, or frequent switching between tasks and projects, which destroys focus and productivity. The fewer hand-offs, the smoother and faster the delivery. Cross-functional teams with end-to-end responsibility are one of the most effective ways to minimize handoffs.
Over-engineering occurs when we do more work than is necessary to achieve a result. In software development, this often manifests as overly complex processes or rigid workflows in tools like JIRA that people end up circumventing. An excessive focus on reporting and metrics at the expense of actual work is also considered a waste.
Paradoxically, over-engineering often masquerades as “quality” or “best practice.” The key is to regularly ask: does this step add real value? If not, simplify it or remove it. A good test is to ask the team which steps in the process they wouldn’t miss.
In software development, “movement” as a form of waste manifests itself in unnecessary steps, meetings, and back-and-forth communication that add no value. This includes approval processes where a finished product is sent back and forth multiple times, as well as meetings without an agenda or clear outcomes. Constant interruptions from work also fall into this category. All of these are forms of movement that slow down delivery.
Unlike handoffs (transfers between people), motion refers more to unnecessary activity within a single team or among a single person. The solution is to shorten feedback loops, involve the right people from the start, and protect time for focused work.
THE AUTHOR
Jan Šrámek
Jan Šrámek is an entrepreneur, CEO, and top enterprise-agile coach with many years of experience in corporations and startups. As the founder of Lucid Bay Digital, he connects the world of agile approaches with the reality of business management.
He previously worked as an analyst and architect in the financial sector, which gives him a strong technical and process background. In his work, he applies "agnostic agile," i.e., respect for the context of the company instead of dogmatism. He is known for his diplomacy, patience, and ability to work with demanding teams. Thanks to his knowledge of business, finance, and leadership, he helps companies truly integrate agility into their culture, products, and everyday practice.
GET INFORMED
Fresh Agile Insights
Proven Product Tips
Team Performance Hacks