The Power Of Generative Metaphor

In Generative Metaphor: A Perspective on Problem-Setting in Social Policy Donald A. Schön presents the idea of how metaphors are central to the task of setting the frame in which we are going to make sense of a problem[1].

According to Schön, the metaphor used to present a problem, sets the stage for how we are going to talk about the problem, how we are going to think about it, and therefore solve it. Let’s see an example.

Gossip vs Epidemics

So here, gossip works as a generative metaphor that helps frame the problem, and reason about it. But there is a problem with it. While gossip makes it really easy to talk about the problem, it makes it hard to formally reason about it. These researcher found a new way to frame the problem: epidemics.

Thanks to epidemics they found that there was a Mathematical Theory of Epidemics, which they could use to formally reason about their algorithms. Also it provided a framework that was also useful for explaining their algorithms.

So there we have two generative metaphors that helped frame a problem, guided their solutions, and in one case, even brought for free a mathematical theory to help reason about the problem.

Are there other interesting instances of Generative Metaphors?

The Guest/Host Relationship

This idea was presented by the designer Charles Eames during an interview:

[…] a very good, thoughtful host, all of whose energy goes into trying to anticipate the needs of his guests. […] We decided that this was an essential ingredient in the design of a building or a useful object.

This generative metaphor allowed them to frame their problems from that point of view. Now try to image what would happen if we use this mindset when we build the APIs that conform our software. How welcoming are them? How much do they try to anticipate the needs of our future users? Would our users need to find workarounds to these APIs so they can get things done? Think about the word work-around. It immediately sounds like something we wouldn’t want to deal with when we use someone else’s API.

The Idea of the Labyrinth

On the other hand if we understand this process as labyrinthine, then we can see how it is necessary to explain to our colleagues the paths that we traversed, but that didn’t make it to the code, to the final documentation, or the report.

Language vs. Tool

We are so used to call them Programming Languages that we don’t stop to reflect what are the implications of treating them as languages, and where the language metaphor breaks off. But again, I just wanted to get the ball rolling, the match will be played in a future article.


If you would like to read more about Generative Metaphor, I’d recommend the paper by Schön cited above.


  1. Demers, A., Greene, D., Hauser, C., Irish, W., Larson, J. 1987. Epidemic algorithms for replicated database maintenance. Proceedings of the Sixth Annual ACM Symposium on Principles of Distributed Computing: 1–12.
  2. Eames, C. 1972. The Guest/Host Relationship.
  3. Videla. A. 2018. Notes on the synthesis of labyrinths. Increment Magazine. Co-Author of RabbitMQ in Action. Previously @Apple @VMWare @EMC. All opinions are my own.