A metaphor is a ray of sunshine reflected from the placid lake of life - straight into your eyes.
First, a bit of etymology. The word, 'metaphor' is a Greek composition, consisting of 'meta' (over
) + 'phor' (to carry
). So, literally, to carry beyond
. How does that map to our current usage of the term? I'm not sure, but I think it means we take the literal, directly observable, and treat it as a symbol for something else, thus carrying it beyond its literal meaning.
According to my admittedly purist interpretation, one thing cannot be a metaphor for
another thing. The word for that is probably symbol
. (Although see the definition below.) You might think of a metaphor as being an equivalence relation of intentionally imprecise semantics.
"All the world's a stage..." is an example of metaphor. The speaker looks beyond "world" and sees "stage". The metaphor itself does not specify in what ways world and stage are alike and in what ways they are different. This is where metaphor admits ambiguity.
There are two not-completely-separate discussions of metaphor on this Wiki, one dealing with the ways in which software-based products are viewed metaphorically by their users. For instance, the way in which Quicken seems to be your checkbook, or the way a word processor seems to be a typewriter. The other discussion deals with metaphor used in the software development process itself. For example, XP's SystemMetaphor
. High-level designs are often metaphorical, such as a "network backbone". These two discussions are not essentially different. I just distinguish them because the latter has directly to do with the quality of software engineering, whereas the former does not.
The essence of metaphor seems to be to ignore observed differences in order to generate new thoughts and insights. It seems inherently part of invention process, but it's antithetical to specification, and therefore its place in engineering is suspect. The key to excellent software engineering
(a term way too overloaded to be useful) may be in discerning when metaphor is helpful, and when it is detrimental.
- Abbr. met., metaph. A figure of speech in which a word or phrase that ordinarily designates one thing is used to designate another, thus making an implicit comparison, as in "a sea of troubles" or "All the world's a stage" (Shakespeare).
- One thing conceived as representing another; a symbol: "The high-rise garbage repository is a metaphor for both accomplishment and failure" (Richard Sever)
Actually, I think it is used in three
(rather than two) ways on Wiki:
- As a pattern or label for overall behavior. Similar to an architectural pattern and sometimes referred to as ArchitecturalStyles. ExtremeProgramming refers to this as the SystemMetaphor. While XP pundits will violently disagree, these are essentially variations on the same basic theme. Examples from both include BlackboardMetaphor, PipesAndFilters, and LinesStationsBinsParts.
- To emulate some real-world entity. Something that models, acts like, or looks like something in the real-world. This is more of a simulation than a metaphor. For example, WinAmp simulates a traditional stereo system with controls you'd expect to see on a physical CD player remote or front-panel.
- As a level of indirection to something else. For example, WinAmp provides a metaphor for playing audio files regardless of what it's User Interface model is. Also, Quicken provides a level of indirection to your checking account - allowing you to monitor and control it indirectly.
While an extremely useful device, number one seems more like a pattern
, or classifier
than it is a metaphor
. This makes the term SystemMetaphor
somewhat suspect. Number two, on the other hand, is a pretty unimaginative and boring device. It is more like rendering
than it is a metaphor
. Number two does little to advance the state-of-the-art for Human Computer Interaction. An imitation is rarely better than the real thing. While easy to do - hey lets just copy the UI of my CD Player!!
- it holds back brand new modes of interaction that can be created in a software system. So, probably the best name for number two is imitation
. See http://www.iarchitect.com/realcd.htm
for an extreme example of imitation. Finally, what I
find most interesting, most pervasive, and most like a metaphor is number three. Yeah, I know, big surprise. However, I think this is a fairly universal aspect of software. Numbers one and two are more like devices
software creation rather than an attribute of
software. To sum up, it seems like the three uses of metaphor on Wiki (with regards to software) are style or pattern
, emulate or imitate
, and symbolic or indirection
. -- RobertDiFalco
Robert, I had the most difficulty with your third instance, since on the face of it I didn't see how indirection is metaphor, but I think I get it now. In other words, you work the brakes by pushing a pedal. After a while, you visualize the brake calipers squeezing the disk as you apply pressure to the pedal with your foot. You're doing the proximal thing, thinking the distal one. Although there is physical linkage, these are different activities, and the resulting incongruence between your tactile experience and your mental one is a kind of metaphor. You may in fact be thinking "I'm stopping the car", when all you're doing is pressing a pedal. I'll buy that, and it's a special case due to the causal chain that exists between the two parts of metaphor, which need not exist for it to be metaphor. In fact, this kind of metaphor is quite tractable for engineering, due to the verifiable causal chain. It's the other kind, the "mental leap" kind that's problematic, because of the way it defies objective verification.
Your second instance does or does not include the venerable "desktop" metaphor? If so, this is not as uninteresting as you have said. For example, how many people actually keep a wastebasket (recycle bin?) on top of their real desk? And do you really have to drag stuff to toss it away, or do you just pick it up and drop it in? There are many other inconsistencies that put this more squarely in the realm of metaphor that a simple rendering.
In your first instance, you use the word "overall", which comes very close to another idea I want to develop, namely the connection between metaphor and abstraction. But I won't launch into that here. Thanks for your contribution of number three. It doesn't change my concern, though, which lies entirely with number one.
I feel pretty confident that we agree. In fact, I was trying to support your concern rather than change it. Thanks for clarifying number three - that was exactly what I meant. So, whenever I say software is metaphor, I mean it in the context of number three. However, this is always misinterpreted to mean number two or one, so maybe I should use a different word!! However, to me, number three is more a true metaphor
than one or two. In the language of your opening comments, one looks through
the brake pedal to the brake pads/disks on the wheels of a car. The brake pedal symbolizes
stopping. Symbolism is
indirection. This sort of metaphor I was trying
to speak about on EngineeringEnvy
(hence the part about the various levels/layers
of metaphor in Quicken). Unfortunately, due to the ambiguity of my descriptions I ended up coming across like I was speaking about number two. -- RobertDiFalco
Hey Robert, I'm feeling all warm and fuzzy because we're agreeing for a change! I hesitate to judge which variant of metaphor is the most
true one. One thing I will say is that, like the word "contingency", the word "metaphor" derives more significance from the disconnection between its two subjects than it does from the implied connection. In that respect, I guess I have to shade in the opposite direction from you (fuzzy feeling fading a tad), and say that metaphor in which the firm linkages of indirection cannot be traced is more true to the form, being more admitting to pure flights of fancy. -- WaldenMathews
Although used in a slightly different context in _The Unbearable Lightness of Being_, I think Kundera would have agreed this quote applies here:
"...metaphors are dangerous. Metaphors are not to be trifled with."
"Ah, but a man's reach should exceed his grasp, Or what's a metaphor?"
(A play on the words of the poem by Robert Browning)
I'd extend the play on words by changing more than the final word, e.g. "Ah, but a man's speech should exceed his grasp, Or what's a metaphor?"
Well, in that case, I would prefer to extend to, "Ah, but a man's speech should exceed the dullard's grasp, Or what's a metaphor?"
According to StephenJayGould
, in Greece a metaphor is a baggage cart.
See also StopUsingMetaphors
It maybe that I am ArguingWithGhosts
just in raising this. What is the relationship between the metaphors discussed here, and ProgrammingPatterns
? -- JohnFletcher