Finding a metaphor

It was quite a while since I followed the Extreme Programming (XP) mailing list, so perhaps there has been more talk about the System Metaphor in XP – but my feeling has been, ever since I began reading about XP and trying to adopt its ideas, that the system metaphor needs to be better understood. In several places I have read the opinion that it’s great if you can come up with a good metaphor, but if you can’t, that’s not a disaster.

First of all, it might not be a disaster: if you ignore the metaphor, something will take its place – namely, the vocabulary the team uses as the system is talked about and that is reflected in the code. I guess that it’s not too uncommon for the vocabulary to not be directly reflected in the code, but that you’ll have to translate it using design documents and diagrams (or your imagination). But something will take its place, and it might be good and it might be bad.

But I’m positive that a good metaphor will be of great benefit to the project; I also think that an unconventional (but powerful) metaphor can make work more fun and hence the team more productive (see here). The question is, though, how to come up with a good metaphor.

Readers of XP books and articles all know of the assembly line metaphor of the primordial XP project; but I can’t recall reading about how the team found this metaphor (please tell me if you know). I’d guess that the people were discussing the system and this image came to someone in a flash. Probably that’s why there hasn’t been any writing about how to find a metaphor of your own. However, reading Michael Michalko’s Cracking Creativity, I’ve found a technique that I think has a chance of being very fruitful.

I’m entertaining myself in spare moments to think about what a really great RSS reader would be like. One of the techniques in Michalko’s book suggested that you pick random things and try to form connections between them and your problem (or, in this case, the system to be built). The principle is that the mind can’t resist finding commonalities however unrelated the things seem to be. I have tried several things and my brain has handed me associations for them all (although some are more fruitful than others) – fishing boats, baby gruel, scaffolding, museums.

The most interesting in the context of XP’s metaphor is fishing boats, where I saw fishing boats going out to see to catch fish, with the RSS items being fish and the fishing grounds being the different RSS feeds. I don’t want a reader that brings in every unread item of every feed I have subscribed to; I want mouthfuls each time I poll. Also, I want only the choicest fish. So the fishing boats would only bring back as much fish as its fishing quota – but since bad fish would be thrown back into the sea, the fishermen can continue fishing until the quota is met.

I found this to be a very powerful metaphor. The features I have thought about can be translated into this vocabulary, and it has already suggested new ideas I hadn’t thought about. Also, I think it would be quite fun to talk about fishing when discussing the evolution of the software.

I think that if I was about to start a new project with a team, I would suggest to my fellow team members to try to find commonalities in things they pass in the street, see on TV, read about, dream about, etc. Then we would meet and list them on the whiteboard, after which we spend some time with each item to see what ideas we get. We might not find our metaphor the first try, but with everybody on the team using this technique I think it won’t take too long.

I also think this is a suitable exercise in the beginning of a project – especially if the team members haven’t worked together before. I think it would be a very effective way (because it’s fun) to start building the team culture. What do you think?

The above was posted to my personal weblog on December 11, 2002. My name is Peter Lindberg and I am a thirtysomething software developer and dad living in Stockholm, Sweden. Here, you’ll find posts in English and Swedish about whatever happens to interest me for the moment.

Posted around the same time:

The seven most recent posts:

  1. Tesugen Replaced (October 7)
  2. My Year of MacBook Troubles (May 16)
  3. Tesugen Turns Five (March 21)
  4. Gustaf Nordenskiöld om keramik kontra kläddesign (December 10, 2006)
  5. Se till att ha två buffertar för oförutsedda utgifter (October 30, 2006)
  6. Bra tips för den som vill börja fondspara (October 7, 2006)
  7. Light-Hearted Parenting Tips (September 16, 2006)