The Jaw-Dropping Power of the Right Question

Thursday, April 30, 2020

Everyone enjoys a good magic show, as attested by the fame and career longevity of Penn and Teller. It takes a remarkable degree of skill to fool an entire audience while it is watching you.

And the ability to create an illusion is closely related to the ability to ask the right question, as that duo's documentary series, Bullshit! also shows. It makes sense that someone who can anticipate what most people would focus on would also be good at uncovering things that many people miss. That said, I mean zero disrespect when I say that there are stories out there that put even the best illusions to shame.

I enjoy and have started collecting such stories, and so was delighted to find a small collection I thought likely to contain a few good ones recently, "Software Folklore." The title isn't quite accurate, because this is really a collection of strange bugs -- not limited to software or even computers -- and how people solved them. (For example, one of the stories is about a French bullet train whose brakes would engage whenever a toilet was flushed.)

My favorite story of the few I have read so far is "Sit Down or Log In," and a nice thing about the story is that it helps the reader understand on a general level the mindset he should aspire to in order to work similar magic himself:

Image by JC Gellidon, via Unsplash, license.
... A programmer had recently installed a new workstation. All was fine when he was sitting down, but he couldn't log in to the system when he was standing up. That behavior was one hundred percent repeatable: he could always log in when sitting and never when standing.

Most of us just sit back and marvel at such a story. How could that workstation know whether the poor guy was sitting or standing? Good debuggers, though, know that there has to be a reason. Electrical theories are the easiest to hypothesize. Was there a loose wire under the carpet, or problems with static electricity? But electrical problems are rarely one-hundred-percent consistent. An alert colleague finally asked the right question: how did the programmer log in when he was sitting and when he was standing? Hold your hands out and try it yourself. [bold added]
Everyone was stumped at first, because everyone was so focused on the electronics that they forgot that the system exhibiting the odd behavior included a human and his relationship to the machine. The prosaic solution should not detract from the intelligence it took to realize this and solve the problem:
The problem was in the keyboard: the tops of two keys were switched. When the programmer was seated he was a touch typist and the problem went unnoticed, but when he stood he was led astray by hunting and pecking. With this hint and a convenient screwdriver, the expert debugger swapped the two wandering keytops and all was well.
Having praised this collection, I'll surprise you by noting that I have not yet read The Medical Detectives. But I will now, based on the recommendation for the same from this story. The author refers to it as "the best book I've seen on debugging."

-- CAV


IKE said...

Thanks for posting this. I prefer the term "troubleshooting," because it's broader than debugging and can apply to just about any system or process. I've been both a coder and a Navy ET, and I find that debugging/troubleshooting is often more fulfilling than the creation aspect of the process. I think it requires deeper conceptual integration of the process end-to-end, while creation can be compartmentalized (both laterally and vertically).

There is a good Heinlein story about a world-class 'shooter called in to fix something (a space elevator maybe). Heinlein was so prolific that it's difficult to remember the name of one of his non-major works.

Gus Van Horn said...

Thanks for the recommendation. I'll look for it the next time I'm looking for some sciencefiction to read.