When it tries to reinvent itself, software development takes paradigms from other industries; in many respects traditional waterfall approaches are analogous to the construction industry, and more recently software development is looking to the manufacturing industry with “lean” being in favour. The benefits of lean in the car industry are self evident, look at the daddy of lean, Toyota. Just-in-time is firmly embedded in the manufacturing lexicography and one of its by-products, six-sigma, has overtaken quality and the TQM movement in many areas.
Software is still in the dark-ages of scientific management, it is more Henry Ford’s production line than Toyota’s production system.
When you do a “Value Stream Map” of Waterfall software development, (a lean methodology that essentially takes each step in the process and asks “how long does that take?”) it is evident that Waterfall is an inefficient process with significant bottle necks at every step of the process. Applying agile / lean techniques aims to overcome these bottlenecks and eliminate “waste” in the process can only be a good thing in an industry that is rife with bloat and failiures. All well and good, but I wonder if we need to take the whole lean manufacturing thing as the ideal paradigm for software development. After all, a software product is not a mass produced car, isn’t it is more a work of art. Something creative…
…you should be thinking about the tectonic shift from productivity to creativity – how shifting from work to play is the source of real, durable, economic gains in the post-network economy.
Shift from productivity to creativity. I like this. I wonder that if we focus solely on productivity and turn software delivery into an ultra-efficient production line, where stories (requirements) are little more than inventory, we risk loosing any creativity in the process. Maybe there is another paradigm we can learn from, that of the film industry. Afterall, building a piece of software in many respects is more like creating a film than building a car…
For a start, it is generally a one-off, it is not a production line.
The team who work on the film are brought together based upon their expertise, they are a project team, rather than a production line business a usual work unit.
There is no architecture, rather a script (overarching story) that is visualised in storyboards.
Filming is not linear, it is done in iterations; film all the scenes on a particular location, regardless of the order they fit in the film.
Filming needs to be responsive to change within the boundaries of the overarching vision (business objective); often decisions are made on location; the director sees a particular shot that was not storyboarded and changes are made there and then.
At the end of each iteration you have the rushes (showcase).
Before being launched the film is previewed (usability tested) and depending upon the audience reaction changes may be made.
And then the film is released to critical acclaim. (Or maybe not…)
I’m not suggesting this is a better paradigm than lean – indeed read the wikipedia entry on film making:
An entire big Hollywood-style production cycle typically takes three years. The first year is taken up with development. The second year comprises pre-production and production and the third year comprises post-production and distribution.
…and that sounds distinctly like waterfall.
There is much the software industry can learn from Lean; it’s not an either/ or, rather that I’m sure there are plenty of lessons that can be learned from the film industry. Let’s not loose creativity in our drive to productivity and efficiency.