Saturday, July 26, 2008


When rules develop lives of their own

Many years ago, I worked on a project that involved developing a computer environment wherein one typed instructions to the computer — this was in the days before graphical interfaces, before widnows and mice and clicking and all that. As it happened, someone had already written a program that would add a desk-calculator function to this sort of environment. A calculator function wasn’t needed, but, well, since it came “for free” (the code was already written), we decided to put it in. What that meant was that in addition to typing instructions about what data files to send where, and such, one could also type “132 / 12” and get the response “11”.

We designed the environment, wrote the code, tested and re-tested, and then gave it to the customer’s technical review team. They, among other things, reviewed all the error messages the program might present to the users, and they had a rule — a generally sensible one — that set out three requirements for each error message:

  1. The message must be grammatical and make reasonable sense on its own.
  2. There must be an explanation available (in reference material and in response to the user’s typing a question mark) that gives more detail about what happened and why it’s an error.
  3. The message must tell the users what they can do about the situation. You can’t just tell someone there’s an error without giving some sort of remedy.

Now, that last one gets a bit tricky. As I said, this is generally a sensible rule... but it’s not one that can be applied slavishly; there are some things for which there simply is no remedy.

And, yet, as you’ve probably guessed, the rule was applied slavishly. In all cases where our error messages didn’t make a remedy clear, they came back to us and demanded that we correct that. We did, for some of them. For some, we hadn’t made things clear enough, and we could, indeed, reword the message and the explanation to tell the users what to do.

For all others, the technical review team simply added a short sentence to the end of the message, “Contact your system administrator,” as though that would be helpful to anyone.

And, so, back in the calculator function, if you typed “132 / 0”, you got this delightful result:

You cannot divide by zero. Contact your system administrator.

No comments: