You Know How This Ends
I’m not much into superhero movies, but there is a particular plot device they use that I find fun: in the typical superhero movie, somewhere in the first half, the hero will get a chance to kill the bad guy, and he will not take it. Maybe he doesn’t yet grasp how dangerous this guy is.
And you just know there will be a second act where the bad guy will wreak havoc, and then a final act where the hero will kill the villain, or send him to jail so that there can be a sequel.
There is a particular class of bug that is like a movie supervillain. The first time you see it, it doesn’t seem like a bug at all. It’s just an odd little pattern, but it doesn’t seem threatening. “Oh, we’re getting duplicate log entries. Well, it’s just logs.” “The decimal expansions in this number array tend to repeat themselves often. Odd.”
Because these things pose no clear danger, you put them aside. You’re not even working on that part of the code, anyway. Perhaps you’re an experienced programmer, and you’ve learned to be suspicious of the shadows, and you make an annotation in your notebook; maybe you even add a TO-DO in your list, perhaps you add a FIX annotation on the source code.
You get the picture. Inevitably, the next day, or the next week or month, something bad will happen. Something will break. And when you’ve gone through all the investigation and fixed several bugs, you’ll end up staring back at that oddity, which was at the root of everything. There might even be a TODO or FIX annotation next to it.
And you’ll see it with new eyes. The bug will speak now. “Ah, we meet again! We’re not so different, you and I.” And you just know exactly how it’s going to end.