The conclusions of lean manufacturing theories are not necessarily valid in the domain of (software) product development.
There’s good reasons why it’s so difficult to fix time, budget, and feature scope all at once in a software development project.
I’ve been listening to a talk by Don Reinertsen, and one of his points, although not the main point, is about variability: if you could reduce variability in the workflow by 10%, or you could reduce capacity utilization by 10%, by far you would prefer to reduce capacity utilization. That’s where the economic payoff is.
The reason is that increased capacity utilization increases queue size and lead time exponentially. In other words, if you try to keep all your resources busy all the time, everything takes forever to finish. This goes for both manufacturing and development. Variability in workflow, however, is bad in manufacturing, but can’t be avoided in product development, and might even be exploited.
So what else is different about development compared to manufacturing?
Manufacturing | Development | |
---|---|---|
Tasks are…. | repetitive | non-repetitive |
Tasks are… | predictable | unpredictable |
Requirements are… | a constraint | a degree of freedom |
Requirements are… | fixed | evolving |
Cost of delay is… | homogeneous | non-homogeneous |
Task durations are… | homogeneous | non-homogeneous |
Variability is… | always waste | not always waste |
Inventory is… | physical objects | information |
Inventory is… | visible | invisible |
Source:
A talk by Don Reinertsen,
Second Generation Lean Product Development: From Cargo Cult to Science