Learning To See Waste
In Lean, waste is anything that does not add value. The key to Lean is getting work flowing rapidly and this is done by identifying and eliminating sources of waste. Some sources of waste are obvious - tasks blocked through lack of feedback, rework due to misunderstood requirements and things like that. Some sources of waste though are not so obvious. Some are so insidious that we live with them all the time and assume they are an inevitable part of daily life.
To help us find and eliminate these sources of waste, we identify seven (because all good things come in sevens... like highly effective habits) types of waste. For software development these are -
Partially Done Work
Let's look quickly at each of those.
Partially done work is any work that has been started but not delivered. Why is this waste? Because it hides other sources of waste. Having a lot of code that has been written but not tested hides defects (waste number 7). Having a lot of requirements written but not delivered hides Extra features (waste number 3) and so on. Limit the amount of partially done work. To do this, deliver small batches of work quickly.
Extra processes is fairly obvious, it's any process step you have to follow that does not directly relate to delivering value. Look for write only documents, status reports that are never acted on, paperwork that adds no value.
Extra features is a huge source of waste. A survey by the Standish Group showed that 60% of features in a typical software project are never or seldom used once delivered. That's 60% of the effort on a project wasted. Focus on the top priorities.The things that people will use all the time. Deliver those quickly then focus on the stuff that will be used less often. You will be surprised how often those less important things will end up being dropped completely once the important stuff is done.
Task Switching is one of those insidious sources of waste and is often an indication that you have other sources of waste in your process. I did another post on task switching here - Task Switching... And why it is bad.
Waiting - any time you have a task blocked while you wait for something, you have waste. Waiting for information, waiting for feedback, waiting for conformation. All waste. Waiting is also a major cause of Task Switching.
Motion waste occurs any time you have to stop what you are doing and go looking for something. Information should be at your fingertips, you should not have to go hunting for it. Motion is also a major cause of waiting.
Finally, defects. Also called rework. Defects are inevitable and if caught early do not cause waste. Waste occurs whenever a defect escapes from the process that created it - a software bug that escapes into testing. A wrong requirement that escapes into code. Defects should be found and fixed within the process that created them. Good engineering practices like nightly builds and automated regression tests help catch defects in-process. Defects cause Task Switching, Motion and Waiting.
Go looking for waste in your projects. You may be shocked at how much waste there is. Imagine how much more productive you could be if that waste went away.