Fundamental to Lean Software Development is the pursuit of minimizing waste. The TPS publicized 7 primary wastes of manufacturing, and the Poppendiecks have since translated these wastes to our world of software development. Jack Mulinsky has recently been posting an introductory series on these wastes at agilesoftwaredevelopment.com.
The series' first post discusses the waste of Partially done work, the software equivalent of Lean Manufacturing's "In-process Inventory", which Mulinksy asserts as the most offensive of all wastes. A summary of the items he categorizes as wasteful "work-in-progress":
- Completed but un-checked-in code
- undocumented code
- untested code
- code not yet in production
- commented out code
In the second post Mulinsky discusses Extra Features ("Over-production" in manufacturing terms), referencing the well-known statistic that as much as 2/3's of the features in existing software applications is either barely or never used. Among other things, he notes how this is wasteful in the direct sense (taking to build useless stuff) as well as the indirect sense (more features means more code and complexity to maintain).
Mulinsky's third post focuses on the software waste of Relearning/Rework, which parallels the "Extra Processing" waste in Lean Manufacturing theory. He describes his idea of a few examples of such waste, including:
- poor planning
- poor quality
- task switching
- poor communication and knowledge persistence
- undocumented code
The series' fourth post (and latest as of this writing) discusses the waste of Handoffs, the software equivalent to "Transportation". He includes these technically-focused examples where this waste can become an issue:
- handoff of code between developers
- handoff of software from developer to tester
- handoff of software from development to deployment
Still to come should be Mulinsky's high-level discussion of what he sees as the remaining 3 software wastes of Task Switching, Delays, and Defects. Stay tuned, particularly if this your first exposure to the ideas of software "wastes" introduced by Mary & Tom Poppendieck in their fantastic Lean software books, Lean Software Development: An Agile Toolkit for Software Development Managers and Implementing Lean Software Development: From Concept to Cash.
Also, for those more familiar with these ideas, what might be useful is to add your own thoughts on how these wastes manifest themselves in software environments, and how you have eliminated them.