Skip to content

The 7 Software Development Wastes - Part 1

June 28, 2009 by Jack Milunsky

Introduction

The more I learn about Lean, the more I realize how much we can learn from Lean teachings and how they apply to software development practices. Typically, we go about our day-to-day activities without thinking about the bigger picture. Lean specifically addresses the complete end-to-end process with the view of enhancing cycle time and quality.

Lean

Value stream mapping is one of the key areas for helping us learn where we fail, but in particular, what I'd like to address in the next series of posts are the 7 wastes which Lean identifies and which I believe are worth mentioning. Once you hear about these wastes I believe you will be more sensitive to realizing when you see these manifested in your organization and should therefore help you to enhance the overall productivity of your teams.

Mary and Tom Poppendiek are two of the thought leaders in applying Lean to software development and I would highly recommend that you buy their books or attend their courses. Mary in particular is inspirational and their knowledge in this space is profound.

7 Manufacturing Wastes

The 7 manufacturing wastes identified by Shigeo Shingo (from his studies of the Toyota production system) are listed below:

In-process Inventory
Over-Production
Extra Processing
Transportation
Motion
Waiting
Defects

Corresponding 7 Software Development Wastes

The 7 corresponding wastes in software development as defined by Mary and Tom Poppendiek are:

Partially done work
Extra Features
Relearning
Handoffs
Task Switching
Delays
Bugs

Today I'd like to address the 1st waste - Partially done work

Partially done work (In Process Inventory)

Partially done work is probably the biggest killer of all the wastes. Partially done work is essentially work-in-progress. Until this work is done, you don't know that there are quality issues i.e. you don't know that the customer will be happy. You don't know if there are going to be problems one you deploy your software onto your production systems. So the idea should be to complete work-in-progress as soon as possible i.e. minimize work-in-progress as much as possible. Examples of partially done work are:

* code that is completed but not checked in to your version control system - if it's not checked in, you don't know if your code changes are going to break the build

* undocumented code - If your code is undocumented, if the developer leaves and someone has to take over, there's going to take longer for the developer to get up to speed. Additionally, if bugs are found, it will be harder for the original developer to figure out what he has done.

* untested code (both unit tests and functional tests) - if your code is untested, you won't know till the code is in your customers hands that there is a bug. The further downstream you are in the process the more costly it's going to be to fix the bugs. So if you build quality in from the start (like writing unit tests) you'll find out the moment you execute the tests

* code that exists on your staging environment and not your production environment - I hear this all the time - "works on my machine" - enough said. Only once you're on production can you be sure the software is 100%. Production always surfaces issues, so the sooner you get it on production servers, the better.

* code that is commented out - makes the software less readable and maintainable

My advice to any company doing software development is to figure out how to get things that are in progress fully completed i.e. DONE in accordance with your definition of DONE, as early as possible. Don't put too many items into the development pipe that you know you can't complete in a given Sprint. Consider everything in your definition of Done to be completed in one cycle. Set your quality bar really high. This will help you ship faster, make your customers happier sooner.

Next week I will be going over a second type of waste - Extra Features.

About the Author: As COO and Scrum Master, Jack Milunsky heads software development at Brightspark. Jack is an early adopter of Scrum and has a great passion for early stage startups. Jack is co-creator of Agilebuddy, a next generation Scrum Application SaaS. Jack combines over 18 years of experience managing software development teams both large and small. You can follow Jack for great tips on Agile at http://twitter.com/agilebuddy

Comments

You've missed the big one

June 28, 2009 by Paul Johnson (not verified), 2 years 31 weeks ago
Comment id: 2780

Pretty much everything produced until you actually cut code is partially done work. That means requirements, architecture and design. Thats not to say that these things are inherently bad, but they are expensive, need to be kept to a minimum, and not stockpiled.

Reference card

June 29, 2009 by Tim Ottinger (not verified), 2 years 31 weeks ago
Comment id: 2781

Slightly paraphrased, formatted to fit on a 3x5 card, here is a reference card http://agileinaflash.blogspot.com/2009/02/seven-wastes.html

The Greatest Waste

June 29, 2009 by Henrik Mårtensson (not verified), 2 years 31 weeks ago
Comment id: 2787

The greatest waste is building the wrong thing. The better you are at building it, the worse off you are.

Getting the wrong thing

June 29, 2009 by jackMilunsky, 2 years 31 weeks ago
Comment id: 2788

I completely agree Henrik that building the wrong thing is the greatest waste of all. And that's why companies must ensure that their agile process get's this and nails the product. However it's important to be aware of all the different wastes so that you can make the organization as efficient as possible. The holy grail is getting it right and being cost effective doing it. Minimizing waste makes your overall organization that much more efficient thereby reducing cycle time.

2 important one

July 17, 2009 by Chad Albrecht (not verified), 2 years 28 weeks ago
Comment id: 2879

Great post! I've found that limiting WIP and avoiding delays are the most critical in the above list. Remedy these and the others seem to go away or get significantly better. Thanks for the thoughts on this! Keep the posts coming!

Great analysis

August 13, 2009 by Mohamed Faramawi (not verified), 2 years 25 weeks ago
Comment id: 2953

I can't wait till you finish the other 6 wastes

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.

Best of AgileSoftwareDevelopment.com