Skip to content

The 7 Software Development Wastes - Lean series Part 3 - Extra Processing

July 17, 2009 by Jack Milunsky

Introduction

Waste is a killer in any organization. But if you don't know what to look for then you're probably not going to be able to find waste and minimize it or eradicate it. This series primarily deals with explicitly defining the 7 wastes in software development so that you can start thinking about how this may affect your ability to remain as productive as you can be. This can make a significant difference to your company's bottom line.

As reference, the first two wastes can be found in my previous blog posts here: In-Process Inventory/Partially done work and Over Production/Extra Features.

#3 - Extra processing

Extra processing in Manufacturing is the 3rd waste and this can be equated to Relearning or Rework in Software development. The time we spend relearning things we once knew or having to rework the same feature due to poor code quality can be significant in many organizations, ergo, it's important to be mindful of this. It's probably useful to list examples that would cause extra processing in software development

Undocumented code

If your developers don't document the code properly then later on when you're either fixing the code or making changes to the code due to new feature requirements, your developers (even the original author of code) are going to need to relearn why the code was written that way in the first place. Taking the time to document your code up front while it's fresh in your mind can therefore save the company time and money.

Poor planning

Some project managers assign work to developers in a haphazard manner. Although you do want to ensure there's knowledge overlap on your team, if you keep switching developers on the same features, each time a new developer takes over, he is going to have to relearn what the original developer already knows.

Poor quality

The earlier you find bugs and fix them the less costly it is for the organization. The most expensive scenario is when you find problems once they're already deployed to production. Partly this is due to the fact that the developer now has to reacquaint himself/herself with the code again. So if the developer spends the time upfront to write extensive unit tests, if the team takes the time to define proper acceptance test criteria then the chances of having to rework the code and worse yet relearn the code diminishes significantly

Task switching

The more things you throw at a developer at the same time the longer things take to get done. Task switching beyond 2 tasks is highly inefficient as the developer has to more often than not relearn or re-acquaint himself with the task context each time he switches back.

Poor communication and recording of knowledge

Today, with the proliferation of technology, there's no excuse for poor communication. Wiki's provide a great way for developers to record knowledge about their findings. And search makes it really easy to find information. I am not advocating heave documentation here. I am suggesting short summaries of information on key decisions you made during development so that if someone else has to take over or you have to come back to that code in the future, the relearning curve is not that great.

Stay tuned for next weeks blog post in this series which will cover the 4th waste - the equivalent of "Transportation" in manufacturing processes.

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

Quality

July 17, 2009 by Todd Landry (not verified), 35 weeks 8 hours ago
Comment id: 2877

Jack, enjoy your blog and tweets!
Totally agree with you about the importance of finding bugs as early as possible in the SDLC. They get more and more expensive to fix the further down the lifecycle they go. Static code analysis can play a role here, allowing developers to run the analysis and fix their bugs before they even check in their code. Will this catch everything? Of course not, but reducing the number of bugs introduced into the code stream is always a good thing. Check out our blog for more info on this and more... http://kloctalk.klocwork.com/

Todd

My Take on 7 Wastes in Software Development

July 17, 2009 by Keith (not verified), 35 weeks 7 hours ago
Comment id: 2878

I've aligned the 7 manufacturing wastes with waste in software development this way:
Inventory = Partially Done Work (getting multiple things partially done and not delivered to production consumes capital without adding value)
Extra Processing = Extra Processes (meetings, paperwork, manual reports, manual status updated, etc., all take workers away from value-added tasks)
Overproduction = Extra Features (features that don't add business value should never be produced)
Transportation = Task Switching (moving a knowledge worker off and on different tasks slows down his/her productivity)
Waiting = Waiting (short iterations/cycles keep a continuous flow of value moving through the process)
Motion = Motion (co-located teams reduce wasted time through motion; daily standups get the right people together when and where they're needed)
Defects = Defects (coding standards, paired programming, TDD, automated builds, customer involvement all help prevent defects)

Previous two posts broken?

February 18, 2010 by Keilaron (not verified), 4 weeks 1 day ago
Comment id: 5531

For some reason, I can't read parts 1 and 2 ... even though my co-worker had part 1 open just a few minutes ago! We're getting 404 errors now.
Did your cool URLs break?

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

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters (without spaces) shown in the image.

Best of AgileSoftwareDevelopment.com