Interesting comments of Martin Fowler starting from this idea : "So as an example - one of the principles of lean manufacturing
is the elimination of inventory.This leads to the question of
whether there is an analogous item to inventory in software
development."
http://martinfowler.com/bliki/MetaphoricQuestioning.html
Martin Fowler make a very interesting comment about a IMO less interesting idea "up front documentation is the equivalent of
inventory": "Now I
agree we need to substantially reduce this kind of speculative
documentation; but the rationale for doing so must come from
thinking about the software development process, not from purely
reasoning by analogy."
Here is my comments on these subjects.
Manufacturing-Software Development Analogies
We should be careful on these analogies because these domains areas are pretty different. Examples: Just-In-Time approach in manufacturing must find solutions for a JIT Production (where the design was previously done "offline") and software development must find find solutions for a JIT Design ("Code is design").
Inventory in Software Development
Manufacturing inventory mean (simplified) a reserve queue of (done) products, ready to be sold. A similar concept in software development IMO is not the massive up-front documentation (based on too many assumptions) , but rather in the motive of producing a such documentation: a massive set of requirements allocated to the same release/delivery/project. "No inventory" approach means as small is possible set of requirements per release. Indeed from this point of view, the classification is already done:
- Large set of requirements releases - non-agile, non-lean approach
- Small set of requirements releases - Agile approach, Lean approach
- Very small set Small set of requirements releases - Continuous Delivery approach
An explicit description of lean and Agile life-cycle models could be found in DAD- Disciplined Agile Delivery: https://disciplinedagiledelivery.wordpress.com/lifecycle/
More: With an increased construction productivity and/or a higher envisioning productivity, a larger set of requirements could be delivered in the same time. Productivity suppose here here good results and quality
The resulted formula of "Inventory" for software development:
(Set of Requirements "volume")/productivity.
Comment: the "formula" could be enhanced to:
(Work volume")/productivity.
But, in this case, it is too vague. The main aspects that increase volume or complexity of the "work" must be specified. here are some of them:
- Requirements volume and complexity at the start
- Solution that must match the requirement
- Team productivity
- Process
- small set of requirements
- good design
- no junk stories with associated phantom features
- high productivity (all contributing aspects)
- small releases
- adapted/effective/efficient process
Finally, seems that starting with this assumption about a "No Inventory" approach for software development we are very close to the description of a Lean/Agile approach.
See more here:
See more here: