Chris Wood has a great blog post on Software Development Metaphors.
He lists a set of software metaphors under broad categories like:
Traditional Software Development Metaphors
- Software Development as a Factory
- Software Development as Engineeing
- Software Development as Model/Architecture
- Software Development as Workflow Process
Radical Software Development Metaphors:
- Software Development as Craft
- Software Development as Game Playing
- Software Development as Composition
- Software Development as Learning/Experimentation/Invention
Chris points out that different shops have different metaphors and sometimes switching metaphors may be required.
if you want to evangelize a new software development methodology (for example, those who are trying to evangelize the use of XP in a traditional RUP organization) starting with a discussion around metaphors and basic understanding of software development might help the discussion, especially with non-technical users.
This is a good post. My current job is Teaching Software to beginners and building experimental prototypes. So my interest is more in Software as Learning/Experimentation/Invention. The radical models may be more appealing to beginners and small teams.
If you are a startup, you may start with one metaphor and will switch metaphors as you grow. It will be nice to see what metaphors most of the Web 2.0 companies use.