Neologism:
1: a new word, usage, or expression. 2: a meaningless word coined by a psychotic.
--Merriam-Webster
If you read much of my writing you'll quickly notice that I am a
compulsive neologiser. I'm always looking to come up with new words
and phrases, indeed this bliki is designed around this habit. I do it because much of what I try to write about is the tricky
subject of software design, where our vocabulary is limited and often
confusing. As I see concepts that are little-known or
oft-misunderstood, I try to give them a name so they are easier to
talk about. This is something I share with the broader pattern
movement. From the very beginning the patterns community has put a lot
of energy figuring how best to name the patterns they describe.
Naming a pattern immediately increases our design
vocabulary. It lets us design at a higher level of
abstraction. Having a vocabulary for patterns lets us talk about
them with our colleagues, in our documentation, and even to
ourselves. It makes it easier to think about designs and to
communicate them and their trade-offs to others. Finding good
names has been one of the hardest parts of developing our catalog.
--The Gang of Four
Of course there are downsides to trying to create this kind of
vocabulary. It does become a jargon which, while aiding
communication for those who know it, also excludes those who
don't. On the whole I feel that the benefits win out. Choosing good words, whether for my more permanent patterns or
just for these bliki entries is a hard task. I spend a lot of time
trying to think of how words will work, looking something that is an
evocative name, doesn't get confused with existing terms, and is
reasonably short (and ideally catchy). Creating completely new terms is what gets the attention, but its
actually something I'd rather not do. I prefer to use an existing
term if there's one available. After all that's less effort. I then
balance it with its common usages to see how well it fits the concept
I'm talking about. Sometimes this results in making a change, for
instance my resistance to using InversionOfControl to describe what was
going on with dependency injection. I always find this a hard decision
- it's much better to use the existing term if it fits, but often the
existing term has a diffuse meaning and I need something crisper. I have been accused of being to quick to neologise, that perhaps
reflects my preference for unfamiliar but precise terms over well
known but fuzzy language. Of course the limitation of this is that there's no way for me,
or any group of patterns writers, to
standardize the vocabulary of everyone. The terms I use often don't
get the most currency. That's understandable, but it doesn't stop
me. I find that if without a consistent vocabulary I can't write
clearly, even if that vocabulary is only consistent for me. So my
fundamental reason is selfish, I develop a consistent vocabulary
because I need one. I find it odd that you run into the occasional accusation that
this is done for some kind of material gain. I've never seen anyone
make money from coining terms, otherwise Rebecca, Josh and I would be
idling on an island from POJO and Jesse James Garrett
would have bought an island from Ajax. Indeed most people who use the term probably don't know
who came up with POJO, and that's just fine with me. Neologising is something I did a lot before I became a software
writer, although my earlier activity was quite different, and
something many people do. This is using domain modeling to build up a
UbiquitousLanguage to create communication between
developers and their customers. It's a different activity with a much
narrower audience. Many projects do it, and even those who don't
create a language in their code to describe the domain, even if it
isn't shared with non-geeks. Despite these differences, both activities share the desire to
speak with brevity and precision about some domain. In either case I
neologise because I find these words are useful tools that helps me
enormously in understanding a domain. I use them
publicly because I believe that the tools that
help me can be useful to others too.
|