Tuesday, March 03, 2009

Computer science, instant gratification, and when they don't show up at work

The one thing that I always loved about computer science is the "build and run" gratification that you get. Sure it takes a while to code perhaps, but you can see most of the time how this piece is going to fit into the thing you're trying to build. And once you have a piece done, compile and run. Get a simple answer, it will run or some semi-colon is missing. The part you wrote is either now present in the program, or causes the program to freeze.

Historically that was the case anyway. Now that the project are bigger and more complex, things get more interesting. Lets say you wrote this piece of code, and yes it did work, and everything was fine. Well one day, some person decided to run your piece of code while eating a blueberry muffin. This person usually prefers cantaloupe, but today was a treat. All of a sudden because of this seemingly unrelated coincidence, the power goes out for the entire neighborhood. Those are the fun bugs to find. And no, my software hasn't caused a blackout, yet.

I can appreciate bugs that have some sort of cascading effect. Those are sometimes even cool to watch. These are the bugs where a beaver chips a tooth, which causes a log to be cut incorrectly, causing the damn to fail, flooding a campsite, and that's why your boots outside the the campsite are soaking wet (true story, got the tooth to prove it). Bugs like these have sort of a long path to follow, they're mostly straight forward, and it's relatively obvious where one leads to the next.

Bugs that I will not stand for are bugs that just hop along causing all their ruckus at the end. It's like a tick in the yard that jumped on a dog, then on the cat that the dog chased, then on the floor, that you stepped near to get infected with something bad. The cause of the result just got passed around and there's less of a evidence path to follow when finding where you might have a "tick colony" or something.

Which leads me to our nice bug today. Apparently while running our software, you can run someone else's software. We have a dialog that says you shouldn't do that, but computer users don't like to read dialogs, me included. Well, while running these two unrelated pieces of software, after closing their software, the subdirectories in our software's directory all get renamed. To make this even more fun, it only does this after running a specific portion of our software. This portion is specific, but large. We can narrow it down, but to run each test scenario takes upwards of 30-40 minutes to get the answer.

Thus mixing my two least favorite items, devious bugs and non-instant gratification. Today was a long day...