| I have the habit of creating Neologisms to describe
the things I see in software development. It's a common habit amongst
writers in this field, for software development still lacks much useful
jargon. One of the problems with building a jargon is that terms
are vulnerable to losing their meaning, in a process of
semantic diffusion - to use yet another potential addition to our
jargon. Semantic diffusion occurs when you have a word that is coined a
	person or group, often with a pretty good definition, but then gets
	spread through the wider community in a way that weakens that
	definition. This weakening risks losing the definition entirely -
	and with it any usefulness to the term. I'm partly prompted to write this because I see this semantic
	diffusion happening very publicly to
	two terms at the moment: 'agile' and 'Web2.0'. Both were coined in the
	last few years and both come with lengthy definitions. (Agile has
	the agile manifesto,
	together with numerous books and articles by
	the authors of the manifesto. Web 2.0 has an excellent definitional
	article by Tim O'Reilly.) Yet both of these face a lot of corruption
	in the field. I've run into people who think agile methods mean you
	shouldn't do any planning and those who think Web 2.0 is solely
	about using AJAX. (A more personal case is RefactoringMalapropism,
	but I'll leave that aside for the moment.) Semantic diffusion is essentially a succession of Chinese
whispers where a different group of people to the originators of a
term  start talking about it without being careful about following the
original definition. These people are listened to by a further group
which then goes on to add their own distortions. After a few of these
hand-offs it's easy to lose a lot of the key meaning of the term
unless you make the point of going back to the originators. It's
ironic that it's popular terms that tend to suffer from this the most.
That's inevitable, of course, since unpopular terms have less people
to create the Chinese whisper chains. Semantic diffusion tends to coincide with hype phase of an idea.
As an idea becomes attractive, lots of people are... well... attracted. Many
of these followers talk about the term and teach about it.  If these
people aren't careful to go back to the source, the Chinese whispers
begin. Popular ideas also spread primarily though communication media
that are more likely to lead to misunderstanding - such as
writing. Many followers aren't fortunate enough to work directly with
the originators and thus learn directly from them. A related indicator to popularity is desirability. A word that
sounds good may be more likely to suffer from semantic diffusion.
'Agile' sounds like something you'd certainly want to be, the antonyms
of agile aren't at all appealing. Who would want to still be merely
1.0 of the web? Kent Beck noticed this effect and thus deliberately
picked Extreme Programming as a name because it less inherently
desirable: 'extreme' is often used as a pejorative. Using a less
desirable term may reduce semantic diffusion, but I don't think it
avoids the problem completely. After all we saw semantic diffusion
occur to 'object-oriented' which is a neutral term. Semantic diffusion is more likely to occur with things that are
	broad concepts rather than hard technologies. Ruby on Rails is
	getting a lot of hype at the moment, but since it's a concrete tool
	it's hard for its meaning to weaken. Extreme Programming's list of
	concrete practices may also reduce this problem compared to agile's
	broader list of values and principles. Semantic diffusion is a painful process to watch, particularly
	for those who find the ideas useful. At the moment I see signs of despair
	for both of these terms, some people in the agile world are talking
	of ditching the word agile. I'm more sanguine about all this, largely because I've seen it
before. There was a time when almost any software tool or method was
described as object-oriented. But now, years later, the essential
meaning of OO is reasonably well understood. I saw the same thing
happen with patterns. So terms do recover their semantic integrity and
the current diffusion doesn't inevitably mean the terms will lose
their meaning. I'm also less worried about it because I expected it,
again having gone through this process before. I think it's an
inevitable consequence of ideas becoming popular and despite its
problems, I prefer the hype to ignorance. A final comforting thought
is that once the equally inevitable backlash comes we get a refocusing
on the original meaning. As I'm writing this I'm comforted by the fact
that I can't think of a
term that lost its meaning entirely, although I'm sure it's happened.
(SOA doesn't count, as I don't think there ever was a commonly agreed
meaning for that to start with.) Whatever the eventual outcome we still have to cope with semantic
diffusion as it happens. One option is abandonment, to drop the
diffuse term and pick a new one. I don't like this option because a
new term only adds to the confusion and even if you're successful you just
end up repeating the process for the new term. So my preference is to keep
re-articulating the current terminology, pointing to those who
understand the true meaning. A further complication is that these terms also shift. I'm sure
if you asked the original seventeen authors of the agile manifesto,
they would come up with a different document today. (Let alone the
fact that that group wouldn't be the best group to speak for the
movement today.) Again it's a responsibility for those who are
identified as originators to point this out, both by talking about the
way the ideas evolve and by pointing to new people who are playing an
active role in that evolution. (I'm pleased that the original
seventeen "let the ship
sail" to go its own way.) Let's not forget there's a tricky
balance between holding to a clear definition and dogmatism.  All of this is hard work, but a good term is worth fighting for -
particularly since the only bullets you need are words. 
 |