Succeeding by Eliminating the Smells of Waste

Written by Paul Hepworth

When the delivery of value is slowed, individuals are often frustrated, teams struggle to perform, and companies are unable to deliver the value to their customers. Sometimes they don’t even know why, and oftentimes attempts to “fix” the frustration without understanding the cause creates more waste and thus more frustration. It's a bad cycle.

Code smells and their corresponding refactoring recipes can give a team a common vocabulary to help identify patterns and prevent technical debt. Similarly the 7 Wastes of Lean Software development can provide a similar framework that can help detect team and process smells in order to become more effective.

The word ‘waste’ can get people’s attention and when used to describe behavior or results it can cause them to be defensive. However, in Lean Software Development, which was adapted from the Toyota Production System, it’s a regular, everyday word that is used to describe any dynamic that prevents or slows down the delivery of value.

A couple of months ago we started what we called ‘Waste Awareness Wednesday’. Each Wednesday one or more wastes were presented and discussed for an extra 10 minutes after our regular standup. The objective was to focus on an area of waste, introduce a new (in some cases) vocabulary word, and then take the week to identify examples of each waste with peers and within teams. With the greater awareness and common vocabulary everyday is now waste awareness day.

I’ll now cover each of the 7 wastes, some of the ‘smells’, and what can be done to eliminate the waste.

7 Wastes in Lean Software Development:

  1. Partially Done Work
  2. Extra Features
  3. Relearning
  4. Handoffs
  5. Delay
  6. Task Switching
  7. Defects

I’ll now briefly go over each of the wastes and share insights, but before I do, I want to say that even though some of them might seem obvious, by digging deeper we were able to see the more subtle value in killing aspects of these wastes. In other words, don’t be fooled by their simplicity; chances are the challenges and frustration that you might be experiencing is likely a result of one or more of these wastes. Okay, let’s get started.

1. Partially Done Work

This waste is usually a result of other wastes (I’ll explain later, keep reading) or from an over eager team that may lack discipline. Although the desire to start work is rooted in good intentions, if a team is not careful they will find themselves with too much work in progress. When that happens, less value is delivered while members of the team often feel overwhelmed by the overhead of too many open pull requests, too many user stories or tasks in development and having to switch between them. Product managers may feel the pressure to switch between customer requests in an attempt to make them all happy while only delaying the happiness of all customers.

Some of the smells of Partially Done Work include:

The list can go on. Basically when you get that frustrated feeling that you or your team cannot move quickly, it’s probably due to partially done work.

What to do about it:

2. Extra Features

The waste of creating extra features is an interesting one because this kind of waste can multiply once a team or company has accepted that it is okay. For example, if a product manager insists on requirements that don’t add direct value it can create a culture where engineers can more easily justify over engineering. This vicious cycle can lead to all of the other 6 wastes. In fact Taiici Ono said that “Extra features is the worst waste because all of the other wastes go along with the extra features.” For example, code that doesn’t need to exist to add value to customers still requires maintenance, can cause delays, have defects, and require more relearning across the team, especially if the value isn’t evident. Bad.

Some of the smells of Extra Features include:

This waste is something that everyone can spot when others are doing it but it can always be harder to spot when you are doing it. This is usually because of the stories that we often tell ourselves.

What to do about it:

3. Relearning

It can sometimes be hard to distinguish between learning and relearning. Generally speaking the relearning waste is evident when organizations learn the same lessons two or more times. It’s investing time and energy into doing more or less the same thing without any additional value being delivered.

Some of the smells of Relearning include:

What to do about it:

4. Handoffs

Although handoffs are difficult to avoid completely, the more they happen the dumber an organization gets resulting in failure. Individuals who are are handed off work take longer to get up to speed through (relearning) and crucial knowledge is lost. In fact, it estimates that half of all of the tacit knowledge is left behind. The worst part about it is that humans can’t see what was left and it’s not until it manifests itself in people doing the wrong thing, the wrong way, for the wrong reason, that it is recognized. Then even when it is recognized it’s usually seen as the fault of the engineer or designer who is often incorrectly judged for their lack of competency. The result is that value is reduced and delayed. Sad.

Some of the smells of Hand-offs include:

Eliminating hand-offs may not be completely achievable, especially before teams evolve to a lean organization. But any effort that reduces handoffs will help transform the organization and team structure towards less waste.

What to do about it:

5. Delay

Delay is a waste that is often caused by other wastes. For example, time spent ramping up on a project that is handed off delays the project. Delay is also a catalyst for waste because while people are waiting they may start new projects which increase the amount of partially done work. In my experience, some of the largest technical debt increases happened immediately following a large delay. Pent up frustration, urgency, or pressure creates an environment where poor decisions are made resulting in poor quality and the justification for poor practices. Delay is a deceptive waste and is the antithesis of flow.

Some of the smells of Delay include:

What to do about it:

6. Task Switching

Task Switching is when one switches from task to task either because of a lack of discipline (the path of least resistance) or because of interruptions. The cost of a task switch can be 15-40 minutes. With enough task switches it becomes clear that flow is not obtained and productivity and job satisfaction suffers.

Some of the smells of Task Switching include:

What to do about it:

7. Defects

Defects might be obvious waste. The key here is to recognize that the waste and cost increases significantly between the time of a defect’s creation and the defect being fixed. Having fewer bugs and ‘building quality in’ is the most efficient way to avoid this waste.

Some of the smells of Defects include:

What to do about it:

Conclusion

As we have grown so quickly, tripling our team last year, it’s become evermore important that we find areas where we can create a common vocabulary around things that are important. Mary & Tom Poppendieck wrote a few books on the subject and did a great job translating the Lean Manufacturing wastes to Lean Software. Delivering value to our customers quickly and constantly is important to us.

While we emphasize code design, quality, readability, maintainability, and overall cleanliness, and look for code smells and opportunities to improve our code, we should also be just as vigilant about looking for waste smells and opportunities for individuals and teams to work more effectively together.

Working to build teams of people who value and invest in the continuous improvement of individuals and team interactions is just as important. I often tell my teams that the soft skills around identifying opportunities to eliminate waste, running experiments, and constantly looking to improve towards maximum effectiveness is just as rewarding as clean, maintainable, and code smell-free code. These are the skills that set engineers and organizations apart.