A good System Metaphor is a golden thing to have. It's the theme that ties everything and everyone together. In an existing system with a great System Metaphor, one can find anticipated concepts reflected in the code easier. A System Metaphor is also a fantastic communication bridge between the Customer and Developers.
The System Metaphor article by William Wake explains what a System Metaphor is. I suggest going beyond the article and checking out his book titled
Extreme Programming Explored to see the "More Examples" section provided in chapter 6.
Examples of System Metaphor and discussions about System Metaphors have been going on for at least 8 years. At
http://c2.com/cgi/wiki?SystemMetaphor, people such as AlistairCockburn and MichaelFeathers have debated on how to make System Metaphor work best. Interestingly, Martin Fowler stated in his
XP 2002 Conference article "...I don't worry too much about metaphor when working with XP...." Has he changed his mind since then?
A thought currently in my head is what to do about System Metaphor Disharmony. If an existing system lacks a System Metaphor that we can recognize, a System Metaphor conceptual rehashing is necessary. Adding communicative new code and cleaning up old code is just easier with a System Metaphor.
So, go forward! Find those System Metaphors! Go for the Gold! :)