We all know that software never goes wrong for its developers. “It works for me,” they always say. Here’s a story of how that sometimes goes to extremes.
“Hi Richie, I’ve got a problem with the ActiveX plugin.” It was Brett, one of our consultants, working on a solution for an important customer. Inevitably, I couldn’t reproduce the bug. “Come to my office and I’ll demonstrate,” said Brett.
The bug was that clicking a link didn’t work – nothing happened. Sure enough, Brett clicked the link and nothing happened. “Can I try?” I said, wondering what I’d been doing differently on my machine. The link worked perfectly. “What?!” Brett tried – nothing. I tried – it worked perfectly.
So we thought, it is working every other time? Does it matter where the focus is when you click? Does it matter whether you’re standing up when you click it? (Stranger things have happened!) Everything we could think of had no effect – it always worked for me; it never worked for Brett.
“Hey, Dave, come and have a go at this!” Dave was another consultant. Needless to say, it failed for Dave. Probably it would have worked if he’d been a developer – these things never fail for developers.
I’m not sure what it was that made me think of this, but I wondered, what happens if I press-and-hold the link before releasing it? It failed. Yay! I’d made it fail! The next job was for Brett: “Click it as fast you can.” And it worked perfectly. My natural clicking action was a bit faster than the others – clickrelease – whereas the others were a bit slower: click-tiny-pause-release.
So, the bug: When the link was clicked, a timer would start. The timer had nothing to do with the link – it was starting when it shouldn’t. The timer would fire one tenth of a second later, and take the focus away from the ActiveX control. If the whole mouse-button-down-mouse-button-up sequence happened in under a tenth of a second, the link would work. Any slower, it would fail.
So we trained the important customer to be really really quick with the mouse, and the money rolled in. Or did we fix the bug? I forget.