For anyone manufacturing physical products on a large scale, Lean Manufacturing has been the hot new thing for quite some time. The Lean Software Development movement packages up a set of generally useful guidelines but it’s connection to lean manufacturing is tenuous at best and fundamentally misunderstands the software process.
It’s been a persistant mistake of management to treat the production of software as a manufacturing task and apply the same manufacturing methodologies that work well for physical products. But as Jack Reeves points out in his classic essay “What is Software Design”:
There is one consequence of considering code as software design that completely overwhelms all others. It is so important and so obvious that it is a total blind spot for most software organizations. This is the fact that software is cheap to build. It does not qualify as inexpensive; it is so cheap it is almost free. If source code is a software design, then actually building software is done by compilers and linkers.
The actual manufacture of software is done purely by the compiler and, as such, software development can be considered the first discipline to have completely solved the manufacturing problem. Lean manufacturing says that we should aspire to six sigma of defect quality, well, software developers can do better than that. Every time we hit the compile button, we are confident that not a bit will be out of place.
Software development is closer to the research & development phase of manufacturing and the few attempts to bring a lean process into those domains have ended in abject failure.
It’s not that lean software development is a bad methodology, it’s not. For the most part, it sounds like a sensible set of guidelines. But to pretend that it has much of anything to do with lean manufacturing is a mistake.