Monday, February 25, 2008

What is a calendar?

It is my intention to write a few posts on the need to focus IT on business solutions. I've got several posts in my head... All I need now is time. A situation today spurred me to post a comment on words and the meaning of words, which is critical for one person to understand another person in order to clearly provide a business solution.

It is 10pm... Do you know where your data is?

I have been a heavy user of google and it's products for some time. This is very interesting on its own since when Microsoft came out with Passport and HailStorm years ago... My response was... "heck NO!" you're not keeping all my data. It is interest, as they had some services but nothing significantly compelling to me. Yet, over the years google hasn't asked to store all my stuff... they didn't have a huge marketing campaign, yet some how they have all my data. I now use they're gmail, calendar, I use and share notebooks, I've used their payment capabilities, I blog on their site, I use their phone services through GrandCentral... they know everything about me. I came to this comparison and realization recently and well... I'm not sure if I am scared yet or not, but that is a subject for another post.

"What's in a name? That which we call a rose By any other name would smell as sweet." - Shakespeare
So on to the main point of this post. I have convinced several other partners to switch from yahoo group calendar to the google calendar. One of them was lost in how to get to this shared calendar so I proceeded to explain via email how the google calendar is used. This resulted in the following statement by me:
It is a little complicated to write about because there needs to be a distinction between a "calendar" of time and a "calendar" which represents a thread of interest through time :)
It made me reflect on how many every day terms we use in English are so abstract.

The essences of Chairness
If you ever read Plato, you know what I mean... The word chair means what you usually think it means. However as Plato puts it, what do you think of when someone says chair. Does it have 4 legs, or 3? Does it have a back to it? If you started picking it apart (remove a leg, etc.), at what point does it cease to be a chair? This isn't made to be too philosophical. The point is some times it is difficult for us to use an abstract term and worse, sometimes words are more abstract then we think they are. Where a chair could paint the same mental picture for 2 people, the concept of what is core to the essences of chairness is likely different.

The trouble with Users
Here in lies the trouble with users. There really isn't an issue with users. They mean what they said and they are paying the bills. However often they say calendar and they mean calendar of time and often a developer sees the bigger picture and sees the need for a calendar to represent a thread of interest. There are a number of issues at this point:
  1. The user and developer understand the words of the domain to have different meanings.
  2. Even, as often is the case, the developer is astute enough to realize that their is a disconnect, words do not exist to delineate between the concepts. This leads to:
    1. Lengthy discussions where the user is dumbfounded, where both parties are asking themselves why doesn't he get it!
    2. Frustration
It is all about context, context, context
It is just interesting how often this situation happens. Often the issue is context. Where context provides the meaning or at least a deeper meaning. But sometimes not. In the example of the calendar, it is tough to say that context would provide greater meaning. This issue is further exacerbated with specific domains where context does matter.

Several years ago, I worked on a life science project working with a lab on transcription profiling. During this engagement a couple of us worked with several top Ph.D.s in the field to help automate the process. It was necessary to understand the word "Allele" and its domain. Although there are aspects about an Allele which were easy to agree upon. The other aspects were dependent on who you talked to and on which day... it didn't take long to realize that it was really a matter of context which provided its mean.

Clarity of Thought
If there is a point to this current blog it would be this: In order to write software... even flexible software (in this case meaning software which can understand context of the user), then it is first necessary to understand concretely what is meant, as well as what are the other contexts of meaning. This may mean more in depth investigation on the part of the BA or developer, but it will pay off in dividends!

This provides some context around the value of Agile development. Closer and frequent communication with the user increases the likelihood of understanding what the user meant. Regular feedback by the user provides the opportunity to discover word meaning differences. The greater the number of users involved increases the likelihood of discovering more contexts. Often this is the reason for a number of "discovered" stories along the Agile path of development.

-- Happy Coding!

1 comment:

Dave Brown said...

Of course, as always, you are very right. The corollary to this is something I have seen in applications many times over.

When a business moves to build an application with a broad audience, the issue becomes even more muddled. One of the ways in which agile helps prevent this is to remove intermediaries. The more people that claim to know what their users are thinking, the more likely some of them are wrong.

The need to get usable models in front of real users quickly is critical to delivering software.