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."
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:
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
- small set of requirements
- good design
- no junk stories with associated phantom features
- high productivity (all contributing aspects)
- small releases
- adapted/effective/efficient process