I recently heard an interview during which one of the people claimed that the US automobile industry’s decline was due in part to its too-little-too-late adoption of “Lean” principles. Lean is a business approach that focuses on eliminating expenditures that do not directly create value for the customer. Originating in Japan nearly 20 years ago, Lean has been instrumental in dramatically transforming many aspects of manufacturing and construction. My question is: can Lean do the same for software?
The seven principles of Lean thinking are (1) eliminate waste, (2) create knowledge, (3) build quality (4) defer commitment, (5) deliver quickly, (6) respect people and (7) look at the entire value stream. These principles stem from the Japanese concepts of Muda, Muri and Mura – three distinct forms of waste. As I’ll explain below, these concepts naturally translate to the software development process. Eliminating these three types of waste in the product development life cycle can result in significantly reduced costs, accelerated timelines and improved product quality. Not surprisingly, Lean goes hand-in-hand with Agile methodology.
MUDA: An activity that doesn’t add value or is unproductive
Extra Code or Features
One of the biggest sources of waste in software development is extra features. Only 20% of most software features are used on a regular basis, meaning that extra features ultimately waste resources. They also reduce the lifespan of the software since a more complex code base is difficult to maintain over the years. Although it’s intimidating to reduce the number of features in a development project, it pays off in the long-run. If a software team truly understands what the customer wants, it should be able to launch a product with just the right amount of features – no more, no less. Think about the iPhone. In many respects, it has less features than other Smartphones, but those features it does have are much more elegant.
Partially Completed Work
“Work-in-progress” is a silent killer because, until the work is completed, you cannot know if there are quality issues. Partially completed work might also get lost, become obsolete or tie up resources. Examples include unchecked source code, undocumented source code, untested code, etc.
Delaying the Test Phase
Not testing a product until the end of the life cycle is the root cause of undiscovered risks. Sadly, this delay often leads to huge amounts of rework and heavy costs to the organization. These reworks can be identified and corrected by following an iterative approach to development and testing early in the life cycle. Remember, either the code is integrated, tested and accepted – or it does not count.
Defect Queues
Defects render a team’s work incomplete, and a defect tracking system is essentially a queue of partially completed work. Although you may assume that a defect in queue will be addressed, the real goal should be to eliminate the need for a queue altogether. By implementing practices such as test-driven development and continuous integration, a team can ensure that no defects are introduced into the system while writing new code. This practice, coupled with automatically integrating source code, will reduce or eliminate the introduction of waste into a system.
MURI: To overburden or be unreasonable
Unrealistic Expectations
We all set unrealistic goals every year as part of our New Year resolutions. Similarly, project managers tend to load their development teams to create a sense of urgency and make them work harder. Not surprisingly, this practice leads to brittle software, hard-to-maintain source code and delayed timelines. Being realistic about variables like available resources, time and ability will go far to prioritize product backlogs and avoid overstraining your development team.
MURA: Unevenness or Inconsistency
Lack of Standards, Tools or Best Practices
Ask five people to work on a similar task, and they will most likely all adopt different methods. Similarly, not having standardized development tools and methods will result in inconsistent product quality and cycle times. Software development assisted by automated testing, code review, build and deployment tools can help reduce inconsistencies and thus improve costs.
Sharing a core set of values and principles, Lean and Agile are deeply interwoven. Lean focuses on eliminating waste, optimizing cycle times and delivering only what the customer truly needs. Agile emphasizes working closely with the customer to deliver the right products at the right time. Lean is more applicable at an organizational level while Agile focuses on the development process itself. I believe merging these two approaches will result in a dramatic improvement in both how products are developed, the quality of these products, and the overall value chain of an organization.
This Post was an Agile collaboration between Peter Harrison & Mayank Gupta of GlobalLogic
Popularity: 79% [?]

May 21st, 2010 at 9:53 am
LEAN concept is very well described with respect to Software industries. Whatever you have specified about all three wastes and there solution, they are great and very help full to reader. Liked it very much.Thanks for sharing such nice thoughts.
May 22nd, 2010 at 6:40 pm
SW industry should learn lesson from others and thanks for the wonderful content shared.
May 24th, 2010 at 11:39 am
Well in terms of software there are other mudas at work namely:
1) Extensive documentation
2) Code comments (proper method and variable names go a long way in not having to write comments
3) Audits / Assessments: Most companies have some outside team member spend time with code. Test driven development is a much better and automated method of assessments.
March 30th, 2011 at 6:05 am
Lean an Agile…Two traits that contribute to the success of many things in this world. Unfortunately the bigger the the bloat the shorter the lifespan in most areas…From technology to human beings….And even our lifestyles. It’s not secret that simple is most always better.
April 20th, 2011 at 7:45 pm
Lean Manufacturing, Six Sigma Blackbelt, Total Quality Management, Design of Experiments, Value Added, Core Competency, ISO Qualified, etc. - all corporate buzzwords that sound impressive in the Mission Statement - but do they really practice it?
Gene Mickser of <a href=\"http://rawwaterpump.org\">Raw Water Pumps</a>