Monday, January 5, 2015

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

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

All elements of the formula are "requirements" for "No Inventory" process in software development:

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.