Shooting trouble
So I encountered one of the software engineer's primary enemies yesterday: a non-deterministic bug. What I mean by that is that the bug's behavior is apparently random. Sometimes the bug will appear, sometimes it will not, and there is no way to reliably reproduce the bug. These are possibly the most difficult class of bugs to fix; if you tell any software developer that you've found a problem with his software, his first question is almost certainly going to be "How do I reproduce it?". This particular bug was due to a race condition; two files were being created at about the same time. If one was created first, the code worked perfectly; if the other was, it exposed a heretofore unknown problem in the code.
I spent eight hours yesterday and four hours today hunting this bug through four layers of software, at least 7 different software modules, and two different configurations. And in the end, I nailed it to the wall.
It's surprising, really, how much pure satisfaction I derive from that; from proving that I understand how the software and the computer work, being able to explain the exact problem to my team lead and my manager, and being able to fix the problem in six lines of code.
It's funny; yesterday I worked late, and the last 12 work hours were high-pressure and high-stress, and they were not at all glamorous, but they sure as hell reminded me why I love what I do.