Monday, December 04, 2006

Development Metaphors

At the moment I'm reading Domain Driven Design and A Confederacy of Dunces (which is quite amusing in a very dry way). So no doubt, I'll be posting reflections on parts of the former.
Today's reflection is about a bit about the Motor Industry metaphor for software development. I
n the motor industry you have a team of highly skilled engineers who design a car, and then the assembly gets done by lower skilled people. Basically, this metaphor is used to support the idea that the hard part of software is the design, and that the important thing is to get the design right. If you do that, then you can have code-slaves putting it all together.
How does the "getting the design right" happen in the motor industry? By the engineers designing, and building, prototypes, testing them out, and then refining them. I might be wrong, but I'm sure that most of the engineers have the knowledge, if not the mechanical skills, to build a car.
In software, the prototype is the product, and so software development is all design. The low skill part - producing distribution media and packaging, can be done by machine. (The low skill repetative bit of coding should be done by machine too.)
To this end, I propose that a more useful metaphor: building a F1 racing car. In this case, you want the best people possible designing and building the car. You want them to interact, to talk about design decisions and how they can be implemented. At no point do you want someone who doesn't understand the interactions of what they're doing working on your tip-top machine.
Software development is all design (yeah, that's a quote from the book).

[Update: this is written about far more eloquently on coding horror, which I read quite coincidentally]

No comments: