Good versus bad variation was a theme at last week's Lean Management Summit in Chicago. It has clearly been a focus in Don Reinertsen's recent work. [I hear he has a new book coming out soon. One book every ten years or so. Don prefers to write only a few books but capture a dense mix of high quality new material each time.] And Brad Appleton was talking about it too recently. I've talked about it too in the past. And then this morning Martin Geddes sends me a link to this piece from Confused of Calcutta which has some good basic advice that sums up the consensus at the Lean Management Summit:
- Organizing for routine work: Drive out variation
- Organizing for innovative work: Encourage variation
The post goes on to grind on some old and outdated views of manufacturing. For sure manufacturing has a focus on driving out variation. However, it isn't true to claim that assembly lines are only capable of producing Model T Ford's in black. In fact, modern manufacturing facilities are very flexible and modern automobiles are offered in as many as 30 billion configurations. It is in fact unusual for an assembly line to turn out more than a handful of cars in a single year that are in fact identical.
It was this vision of manufacturing that inspired Jack Greenfield in his vision for Software Factories. The idea, that we can capture the routine development work and encapsulate it as a reusable package of assets in something we [at Microsoft] call a Software Factory that can be deployed in to an application development project at minimal cost and effort thus enabling the development team to focus on the truly innovative and differentiating features in the design, is one that will greatly improve quality, reliability, and productivity in software engineering.
This concept can be tied to my ideas on strategic planning and product mix selection, that suggest we can divide a product mix into "table stakes" (or commodities), differentiators and spoilers. The commodity features are the ones we want to encapsulate in a software factory. Confused of Calcutta suggests that commodity features should always be developed as open source projects. Again at Microsoft we wouldn't completely agree with this. Often open source projects are created as "spoilers" to spoil a profitable market for someone else. Instead, we see the role of Software Factories enabling a supply chain for commodity reusable application development assets. Software Factories enable capitalism and the development of a supply chain in our industry similar to the supply chains that exist for other industries like automotive. Sure some commodity components may be developed as collaborative industry initiatives. Some of those will be open source, but the key here is that it doesn't always have to be that way. There is a capitalist alternative that potentially enables an exchange of value between horizontal market creators of commodity components and vertical or niche market operators delivering differentiated product and services. Technorati tag: Microsoft, Software+Factories, David+Anderson, Lean, Jack+Greenfield, Visual+Studio+Team+System, VSTS, Brad+Appleton, Innovation, Strategic+Planning, Software+Engineering