Monday, July 19, 2010

My whatchamacallit's gone haywire again.

"My whatchamacallit's gone haywire again. Can you have a look?" I listened to the voicemail a half dozen times. That was the entire message. No name, no telephone number, no date, no time, not even the name of the school. The message was left on my personal cellphone; I suppose I should have known better than to give that out! I did not recognize the caller's voice. I could only assume that it was a teacher calling from one of the schools where our company provides technical support. She probably did not realize that there is a whole team of people here, working with many different schools, addressing many aspects of educational technology. She probably did not consider that, given my role in our organization, it might not be particularly cost-effective for me to serve as first responder whenever a whatchamacallit goes haywire.

A more rational person would simply have deleted the message after hearing it the first time. If it were important enough, the teacher would surely call back and leave a more detailed message. Alas, the obsessive-compulsive side of me could not let it rest. It might be a relative or close friend who expected that I would recognize their voice. I was overcome by curiosity. I began playing the voicemail for other members of our team. Finally someone -- I believe it might have been Tom -- recognized the voice. After searching our memories and databases, we ascertained which district, which school and finally which classroom. We dispatched a member of our technical staff to "have a look." The teacher was not available to discuss the problem. There were about six computers, a printer, a scanner, and one or two other peripheral devices in the classroom. None were marked "out of order." Each device powered up and appeared to be operating normally, after a quick test. Now what? It was a wasted visit, since we just did not have enough information to work with: no trouble ticket, no screenshot, no error message, not a clue as to which device was malfunctioning. That teacher was surely frustrated the next day because her whatchamacallit was not repaired, probably interfering with her lesson plan that attempted to integrate technology into the curriculum.

For a long time, it had been my suspicion that each profession developed its own complex jargon primarily as a sort of barrier to entry, to protect practitioners from competition. While that might be partially true, there is in fact tremendous problem solving power to be gained by assigning precise names to things. Computer programmers, for example, spend a great deal of time choosing mnemonic names for variables. The very idea of a variable, after all, is to assign a name to a meaningful quantity whose value is unknown or might change. Names help us remember the relationship between structure and function. Shared names within a community of practitioners make it possible for communication to occur more efficiently -- I want to say, "at higher bandwidth" -- and for best practices to be replicated. (If recipes were to specify 0.3 ml of NaCl, instead of a "pinch of salt," perhaps even I could learn to cook.) Admittedly, sometimes it has been forgotten that giving a phenomenon a name is by no means the same as explaining it. That mistake itself has a name: it is called the "nominal fallacy," and giving this "bug" a name helps us remember to avoid falling into that very trap.

Recently, in one of our summer workshops, I noticed one 11-year-old boy who was especially adept at assembling robots using Legos. I began asking him about this skill, and I soon realized that much of his expertise came from knowing the names of almost every piece. He could describe not only the various types of gears, such as a worm gear, but also their purposes, such as trading speed for power, or changing the direction of rotation. Whether it is Printers or Robots or Internet Service Providers or Flash Drives, no one can deny that technologies of every size and shape will play a fundamental role in the future lives of the children in our schools today. If our goal is to prepare them to live productive lives in this new land, should we not add a few new, technically precise words to our own vocabularies?

Good question, Curt! Although the strangely incomplete voicemail message and our initial efforts to respond were indelibly etched in my memory, I cannot recall the outcome with confidence. My vague, uncertain recollection has been that the recurrent, underlying problem might have merely been a forgotten password.

I have found that, as a system designer entering a new problem space, one of the first steps is to design language for navigating it. If I were German, I'd be allowed to concatenate nouns into longer nouns. In English, the equivalent is to just build new word combinations. (It works the same way from the brain's language processor. ) The new language carves out a new pathway though the weeds, and new vantage points from which to view the problem space. It took me many years to learn it, but language creativity is one of the most important aspects of Systems Design and for Computer Science. Rarely covered in the CS classroom is anything explicit about naming variables, functions and classes. It's partly an art and partly science. The major rule is: If I adopt name "xxxxxxxx", does it clearly convey the purpose of the thing, to the extent that someone else (or myself 10 years from now) will be able to make sense of what this code is does?

Great systems architects create a Data Dictionary as a tool to highlight the language conventions that are novel to the project.

Here is an example: When I was developing a new system for software-assisted geometry problem-solving, I realized that after a problem is solved, half of the extent knowhow is vested in the software code written, and the other half is vested in the person who wrote it. What do you call the latter?