I was just working on an Access DB, and I noticed that it's now somehow 415 MB. Want to know the funny part? There's no data in it. Not a SINGLE ROW. Just two EMPTY TABLES. HOW?! Someone was paying me to do this as a side-project, and I'm going to have to tell them tomorrow that I've completely and utterly failed. I simply cannot get Access to work. There are two possibilities as to why: either Access 2007 is a piece of garbage, or I'm an idiot, and I don't think I'm an idiot in this particular case.
Having gotten that out of the way: if you read through a few posts in this blog, you'll probably quickly come to realize that my blog is approximately 97% rants. In this case it's about something I truly hate (MS Access). Most of the time I'm really just being silly. I don't really hate Emacs or Python or most of the other targets of my ramblings. They're well-developed, useful, successful open source projects.
I have to hope and pray that most other people feel the same way. Even people who participate in the infamous Vim vs. Emacs wars or the Linux distro wars or the Ruby vs. Python vs. Perl wars or whatever, even those people I think would admit that deep down, they don't really hate the opposition. I really hope that's true. (Except in IE vs. Firefox/Opera/anything else wars, in which case yes, IE deserves to burn in web browser hell for all eternity.)
Why the rants then? For me, it's because I have a love-hate relationship with computers. I think that anyone who spends a lot of time dealing with them eventually will end up feeling the same way too.
Imagine a carpenter who is forced to use a hammer that on 19 swings out of 20, misses whatever he's aiming at. Or the head flies off and hits him in the face. That's the process we go through as programmers every day.
We put spend hours and hours training ourselves to be good programmers, bending our minds in all kinds of pretzels, learning the minute esoteric details of exactly how to write and format code in some programming language so that not a single character is out of place. Then we put forth all kinds of thought and effort and creative energy to produce something useful and powerful and maybe even a little bit artistic. And then we try to run our shiny new program, and we're treated to a screenful of "WRONNNNNNGG! SYNTAX ERROR!!!!!! UNDECLARED VARIABLE!!!!!! CORE DUMP!!!!! UNHANDLED EXCEPTION!!!!" Over and over and over, eight hours per day (at work; more at home at night if I'm in the mood).
Some people can deal with that, and some people can't. I've seen non-programmers try to do something as simple as write a web page in HTML. I'm not surprised at how quickly the task reduces most people to foaming-at-the-mouth, frothing, psychotic rage.
I've long believed that it takes a special kind of personality disorder to be a programmer. It takes an obsessively over-active attention span and a willingness to subject yourself to a very mild yet unrelenting form of mental torture. It's not that programming gets any less frustrating. It's that we learn to accept and even welcome the pain of it. Most good programmers I've met are a cynical, sarcastic, somehow cheerfully pessimistic bunch.
So at some point after the seventh or eighth hour in a row of non-stop code-writing, it's no longer about solving a problem or having fun. It's about revenge. Anger and hatred take over as motivation. The problem is simply going to be solved, even if I have to rip the computer apart with my bare hands and divine the answer on its entrails. Picture Office Space, a couple of geeky guys going out into the field with baseball bats and letting the printer have it. Everyone who's written substantial amounts of code knows exactly what that's like.
Yet at the end of the process, having experienced failure after failure after failure, eventually there will come a point where you hit Enter, and against all expectations, completely by surprise, your program works. Glorious streams of correct output flash across the screen. Is that moment worth all the anguish to get there? It must be, because I keep doing it.
I think in the end I do love programming. I'm lucky to have a job where I can do it every day. At the same time, if you ever come into my office and I'm curled up under my desk in a fetal position, laughing maniacally, try to look the other way.