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.

reposted on 11 Jul 2012