Software factories and automobile assembly lines

At the Microsoft MVP 2007 Global Summit held last month, I had the opportunity to hear Jack Greenfield talk about software factories. During Jack’s presentation Sam Gentile essentially remarked that while he understands and uses software factories, he doesn’t understand the point/value of software product lines (e.g. BDUF vs. agile…).

As Jack provided a thoughtful response, I too was thinking about how I’d reply. The following analogy came to mind–from an episode of The History Channel’s “Modern Marvels” show on the subject of assembly lines. (You can view a small portion of the show online here.)

Henry Ford was quite successful in cementing the role of the assembly line in automobile manufacturing. A well-known remark of his is, “You can have whatever color you want as long as it’s black.” And the way Ford tooled and drove its assembly line exemplified this focus. After Ford’s workforce rebelled against the ever-increasing speed of the line and was wooed back by essentially by money, Ford’s customer base increased its demand for customization–even just a change in external paint color. Enter GM.

GM was able to grab a fair bit of market share from Ford by understanding how to copy Ford’s success while also addressing consumer demand for increased choice.

Later, after choice was commoditized (i.e. presumed by the consumer), quality came to the foreground. Enter Toyota.

Toyota dramatically changed the role of the line worker to a fully empowered, responsible agent of quality and process improvement. Instead of increasing production by dialing up the speed of the line, Toyota practiced “kaizen.” Its management reduced available resources by 10% and expected/supported the line to adapt. Quality wasn’t a job–recall Ford’s more recent “quality is job one” campaign–it was a mindset…a workplace lifestyle, if you will.

Now South Korea and its Hyundai corporation are getting into the fray with an emphasis on enhancing quality through robotics and repeatable fine tolerances in manufacturing as a result. A May 2007 Motor Trend article about Hyundai’s recently revealed Concept Genesis emphasized the potential of a car that can compete with a Lexus while featuring a price of a Toyota. Sounds like more disruption to me.

Back to software factories and software product lines…

At its very beginning, Ford represented (just) a software factory. GM represents an initial software product line–harvesting assets from Ford. Toyota represents a later software product line–harvesting assets from GM and from Ford.

Perhaps Ford could have kept GM at bay or out of its market by taking more of a “software product line” mentality from the get-go–similarly, American auto makers and the likes of Toyota and Honda (Japanese auto makers).

Later, another MVP remarked that his essential concern is protection from what is going to change (or from “variability” to reference Jack’s translation of this concern). I believe that a software product line practice can raise visibility here and also to the inverse concern: Where are my fundamental assumptions? What are my invariants and what happens when change happens there?

In the case of automobile makers like Ford, GM and Toyota, history offers powerful examples of why architects should pursue software product lines and understand how they underlie software factories.