Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/raedan/public_html/textpattern/lib/txplib_db.php on line 14
State of Flow: Just Semantics::journal

Just Semantics

Lance Walton - Saturday October 15, 2005

Effective software development is critically dependent on the ability of the various parties to communicate with clarity. This requires a clear nomenclature and terminology. Unfortunately, many developers, business analysts and users play fast and loose with both of these things and then wonder why everything is a bit confused.

In Shakespeare’s ‘Romeo and Juliet’, Juliet asks:

What’s in a name? That which we call a rose
By any other word would smell as sweet.

Apart from the beauty of expression, these are powerful words. For with them, Shakespeare succinctly expresses the essential tension in the play; Juliet is saying that names are simply a convention and that it is neither the name ‘Montague’ nor the Montague family that she loves, but the person (Romeo) Montague. Their respective families, however, differ in their assessment of the importance of names, which gives rise to the tragic events that follow.

What does this have to do with software development?

Effective software development, on anything but the smallest scale, is not about telling the machine what to do. Instead, it is critically dependent on the ability of the various parties to communicate with clarity. To do this requires a clear and semantically rich nomenclature and terminology. Unfortunately, many developers, business analysts and users play fast and loose with both of these things and then wonder why everything is a bit confused and not proceeding as hoped.

To demonstrate this point, consider Lewis Carrol’s ‘Jabberwocky’, the extraordinary nonsense poem in Alice Through the Looking Glass. The first verse is:

`Twas brillig, and the slithy toves
Did gyre and gimble in the wabe:
All mimsy were the borogoves,
And the mome raths outgrabe.

Humpty Dumpty helps Alice to understand the poem by providing biverbal definitions for each of the terms: ‘brillig’ means ‘four o’ clock in the afternoon’, ‘slithy’ means ‘lithe and slimy’, ‘toves’ are ‘something like badgers, something like lizards and something like corkscrews’, etc. As the passage goes on and Alice’s understanding improves, she begins to provide some of the definitions herself.

This has everything to do with software development, because a significant part of the effort of building large software solutions, from analysis to coding, is to do with establishing meaning and operationalising it. The way this happens is largely centered around the definition of terms, or conversely, searching for terms to match a definition. Developers, taking the role of Alice, and users (or business analysts), taking Humpty Dumpty’s place, do this all the time although they may not normally look at it in this way:

However, there is often a sloppiness in this that I think goes well beyond the exploratory nature of much software development. Terminology is frequently ill defined, inevitably leading to confusion. The usual logical fallacies, plus the tenacity of the brain in trying to make sense of whatever is put before it, are responsible for most of the problems. As Francis Bacon puts it (_Novum Organum_, I. 59.):

Men believe that their reason rules over words; but it is also the case that words react, and in their turn use their influence on the intellect.

So, if we are to have a hope of avoiding software tragedies on the scale of Romeo and Juliet, or development efforts that, like Humpty Dumpty, break into numerous pieces that resist repair, the words we use and the way we combine them need to be more carefully considered. Cries of ‘That’s just semantics!’ need to be understood not by interpreting ‘just’ to mean ‘merely’ but rather as ‘proper and correct’, since it is precise semantics which allows unfettered progress.