Sometimes the answer to a question is so obvious that we skip over it looking for a fancier answer.
Example: A chair at my house had a bunch of little indentations on the seat – kind of like what you’d expect if somebody took a math compass and poked the chair a bunch of times.
I had some friends over and asked them what they thought caused the indentations. They guessed things like:
- did you set something on top of it such as another chair?
- did the buttons on somebody’s pants scratch it?
- did it get accidentally bumped a bunch of times?
- did you drop a box of nails on it?
No. My 3 year old took a math compass and poked the chair a bunch of times.
But seriously …
I noticed this with threading bugs. Sometimes I’d look at a crash dump of a race condition. I’d have no live repro and would be pouring over the sources trying to infer what the race could be. The search space for race conditions is huge, and I’d often find some crazy 15 step race (“the user presses 3 buttons within 10 ms while 4 threads happen to be at certain spots”). But while that was technically a bug, it turned out that was never the real problem. The real problem would always be much simpler.