Skip navigation.

The Gilbertian Squirrel Dodge

general software testing | heuristics | metaphors
Another chapter in the continuing saga of my personal quest for good heuristics.

Earlier this summer, I had the honor of attending WHET, the Workshop on Heuristic and Exploratory Techniques. Leaving the workshop one afternoon, lost in deep thought over the day’s events, I was strolling down the sidewalk toward my car. In the grassy area off to my left, I was vaguely aware of some squirrels playing away. As I approached, they stood up and froze, suddenly leery of the giant monster who had just invaded their space. As I continued to walk along the sidewalk, at complete right angles to the squirrels, staring at the ground in front of me lost in thought, taking no notice of them whatsoever, one of them finally could not take the pressure any longer, and he bolted…unfortunately, he chose his escape route very poorly, and before I realized what he was doing, the poor little guy ran headfirst, full speed, directly into the side of my foot. Right into my foot!! I’m not kidding…he hit me so hard it hurt. He bounced off of my foot, rolled over, jumped up and picked a new direction to run. I was amazed.

And like the starburst that must have gone off in his poor little head, I suddenly saw clearly how this behavior gets played out all the time. And thus was borne “The Gilbertian Squirrel Dodge”, that frantic avoidance of danger not real, and the latest in my growing list of heuristics. (Side bar: At WHET, one of the amusing things going on during the week was a casual attempt to invent new words or phrases and attach your name to them, such as “The Bachtonian Transpection”, which I may use as a later topic if James does not beat me to it.) So what does “The Gilbertian Squirrel Dodge” help me to remember? That when things seem to be going very badly, and I am filled with a sense of panic and an overriding urge to do something, anything, take some action, what I should probably do…is nothing. Sit still. The danger…or at least the sense of impending doom…will pass, and I will be more able, in just a very little while, to rationally evaluate the situation and take proper action. That under those conditions, taking action may in fact cause harm…irreparable harm. While waiting may allow something bad to continue happening for a time, that is usually manageable and recoverable.

Okay, so that sounds all well and good, but how does it play in the real world? You’d be amazed. Since WHET, I have quietly been keeping track of how many times I see this principle violated, and the pain it causes. In our rush to get our weekly work done so we can get to the weekend, in our rush to make the project deadline, in our rush to be first to market…over and over, we become reactionary in really bad ways. I have lots of stories I could tell, but let me just give you a small example that has consumed the last two days of my life.

A few days ago, Erwin Trier, a friend and long time beta tester for our products, shot me an email telling me that our automatic update was not working for him. We checked, and of course he was right. The code for the update process had been stable, static, and functioning perfectly well over a year. But faced with the fact that this was a live defect already in production that potentially affected every single user of our product, and although did no harm, was incredibly embarrassing, we sprang to action. We quickly came to understand that the problem was related to the size of the download file for upgrades, which over time had grown. We spent two days refactoring code looking for the smoking gun of some hard coded size limitation that someone had thought would never get exceeded. We were also working with our server side webmasters and ISP team to see if the problem was on their side. This morning, I finally got an email…turns out there was a size cap for outbound anonymous FTP.

In retrospect, it is easy, but in the heat of battle, it is not. All we had to do was send our customers an email with a direct download link for the upgrade, and an apology for the inconvenience. Embarrassing, yes, but problem solved and all the time in the world to fix the issue. Instead, we did a very risky thing…we messed with code that we had proven out already. Because I forgot about the squirrels. And while in the end, the results are not devastating to us, we still have to mop up, figure out whether to throw all the refactoring away and stick with the production base, or finish what we’ve started, and then build in safeguards to prevent misconfigured FTP servers from biting us again. All told, this will cost me over a week of development time, and for a company like ours, that is real pain.

So the next time you’re sitting at your desk thinking “Crap, what the hell is going on here? I don’t get it. I’ve got to do something!!” – DON’T!!!

Remember the squirrels.

Sincerely,
David