7 Lean wastes in software development
Lean is a mindset that focuses on creating processes that produce more value, more efficiently. Many software development processes are Lean – whether they’re called that or not. Agile methodologies can be seen as an application of Lean thinking – focused on efficiency, centering the customer/user in the process, and reducing waste. But if we’re reducing waste, what kind of waste are we talking about? What wastes can we reduce? Read on for the 7 Lean wastes and how they apply to digital product development — regardless of the method your team uses.
Table of contents
What is Lean?
Lean principles (more on those in a moment) date back to the mid-20th century and were originally formulated via the Toyota factory in Japan. To quote the Lean Enterprise Institute:
Lean is a way of thinking about creating needed value with fewer resources and less waste.
Lean focuses on continuous improvement via experimentation to deliver maximum value. The seven Lean principles are:
- Eliminate Waste
- Amplify Learning
- Defer Commitment
- Deliver as fast as possible
- Build Quality In
- Respect for People
- Optimize the whole
No wonder Lean is often applied – directly or indirectly – to the process of software and digital product development. To stick with the Institute’s explanation of Lean, the following phrases would leap out at anyone familiar with Agile development:
Lean thinking always starts with the customer.
…what problem does the customer need to solve?
Through ongoing experimentation, workers and managers learn by innovating in their work…
…highly adaptive to its ever-changing environment…
So, if we were to ask the question, can Lean be used in software development, the answer is a resounding yes! But what about reducing waste? Balancing the principles, Lean wastes come in seven different categories – do we find those same seven Lean wastes in software development?
7 Lean wastes in software development
As we’ve seen, the first principle of Lean is to eliminate waste, emphasizing its importance. The seven lean waste categories may be found listed in various orders and are: transportation, inventory, motion, waiting, overproduction, over-processing, and defects.
1. Transportation
Transportation refers to any unnecessary movement of resources or materials. Such practices waste time, result in extra (non-necessary) costs, and may affect the overall quality of the end result. In software terms, the equivalent waste is when practices impact developer focus – such as switching between different tasks too frequently, unnecessary handoffs between different developers, and just excessive interruptions from colleagues or collaborators.
2. Inventory
In manufacturing, holding too much inventory is when materials or resources are stocked or held onto on a ‘just in case’ basis. This is basically a scenario of overstocking – the motive is to provide a buffer that protects against unexpected demand, or production delays, or unpredicted glitches in the supply chain. It’s essentially a tactic born of anxiety, and potentially poor planning. The reality is that overstocking inventory does little to meet customer or user demands and rarely adds value. On the other hand, excessive inventory does mean increased costs. In software development, the ‘inventory’ is not so tangible, but it still exists – think about times you have developed but not delivered code or features; or have begun but not finished user stories… effort or resources have gone into producing something that is then not used. A waste.
3. Motion
Motion indicates movement – either of resources, machinery, or people – that is wasteful. It may be wholly unnecessary, or it may be that the necessary motion is overcomplicated. The result tends to be longer production times and increased risk. Processes should be ‘minimalist’ in that they require the least amount of movement to create a successful result. In software development, an example of motion would be unnecessary meetings or meetings that take place face to face but could have been equally effectively handled remotely. Likewise, context switching or other forms of multitasking could be a software-related example of an overcomplicated process.
4. Waiting
In simple terms, when you’re waiting, you’re not doing – in other words, nothing productive is happening. In ‘classic’ Lean, this might be waiting for a delivery, waiting for repairs or maintenance to be done, or waiting for senior approval or sign-off before work on a task can begin. For software developers, the same principle applies – it might be waiting for testing to finish, for a code review to be completed or some other pause in the process.
5. Over-production
Exceeding demand – if the customer or user doesn’t want or is unwilling to pay for something – is a waste. Hence, producing too much of something or something that won’t be used or adopted is wasteful. What’s more, over-production is a factor that also causes other wastes on our list – additional transportation and motion, more waiting, increased inventory, etc. In the development of intangible products, such as software, over-production can be seen in the creation of features that won’t be adopted or are otherwise unnecessary to users.
6. Over-processing
Over-processing encompasses any kind of ‘doing too much’ – it might be over-engineering, adding unnecessary elements to the design or aspects that will never be used. Over-processing increases costs and the time required for production – resulting in an elevated cost to the buyer. In software development terms, an example of over-processing is inelegant coding; using unnecessarily complex code to solve a problem when a simpler, quicker solution is available.
7. Defects
Defective work or products must either be scrapped or re-done. Hopefully, the waste here is self-evident: additional time, cost, and labor. Much better (much leaner!) to get the production process right the first time with no need for reworking. Defects in software can be seen in bugs that appear during testing (or worse, after release) and other examples of faulty code.
All seven Lean wastes are a potential drag on an efficient and effective software development process, potentially resulting in mediocre or non-functioning products that will fail in some way with users. By adopting methods such as prototyping or minimum viable products, and extensive user testing, developers can identify the specific stages and bottlenecks at which waste is occurring (for example, overproduction or defects) and fix them.
Lean waste #8?
Although the original Toyota Production System included only seven lean wastes, many now add an eighth: not utilizing talent, or wasting human potential. After all, the systems and processes may look slick, but if they don’t maximize the use of your people’s available skills and knowledge, that’s a waste. Assigning the wrong tasks to the wrong people, unnecessary admin work, lack of communication or teamwork, unsupportive management, or insufficient training are all examples of wasting talent or potential.
Lean software development wastes
The whole point of working in Lean is efficiency – putting the customer or user front and center of the development process, working in a manner that is elegant, and doing nothing unnecessary – with the goal of producing quality products that the target user market will embrace enthusiastically. By focusing on identifying and rectifying waste in your software development process, you are aiming at peak efficiency, and that will lead to a competitive advantage. The goal is to optimize the processes of design and development, reducing risk and increasing product quality and profitability.
Share this article: