Kent,
In the XP book you continuously use metaphors to describe the ideas behind
the values, principles and practices and derive lots of insight from
there.
Besides choosing metaphors for naming, I couldn't find explicit references
to metaphors for implementation. When (again) thinking about possible
metaphors for this one.
The only metaphor that is close enough and so powerful I can't even
comprehend half of its power is creative writing. There you use a language
to create a domain (world) habited by your key players who have a detailed
character, possess (dynamic) behavior, attributes and belong to
stereotypes. Besides the main characters which often form hierarchies
there are additional supporting people which get work delegated.
Communication between the characters acting in different roles and bearing
according responsibilities is very important.
When writing and telling your story, communicating with your reader is
most important, overwhelming them is not very useful. Careful choosing of
structures, names, building a consistent view of the world and the
processes therein makes the plot readable or unintelligible.
The argument that object orientation resembles the concepts of our world
and so writing is just a view or model of our world is not enough. When
writing you create new worlds where everything is under your control. Of
course most of these worlds resemble ours in many ways but don't have to.
They have to accommodate the story that is told within their realm.
The value of flexibility is needed when you extend your world and tell
more stories in sequels. Then it matters how you formed your world which
details did you publish prematurely and which ones remained hidden to be
refined later.
You even have the possibility to change your world, to evolve your
characters to let them die or have others take their roles and
responsibilities.
To break up hierarchies, to use new languages to introduce new situations
and events.
Although the book itself is not changed, the story it tells and the world
that it describes is changed afterwards.
Quite similar to updating an API or framework. You have to be consistent
(to some account) but the changes are neither forbidden nor a bad thing at
all. They are an evolution.
While creating your world you start with a outline, with some thoughts,
even some existing details, perhaps some requirements and incrementally
form this place, inhabit it and make it alive (players, behavior, roles,
etc.).
You constantly refine it until there is no unnecessary duplication, all
story-lines form together a consistent, understandable whole.
When is writing done? When the story is told, is there such a thing?
So, our writing is called writing software, theirs writing stories. Not so
different? What do you think ?
Michael