I have two explanations.
First, it describes the paradox of being a good programmer. Good programmers don't need to spend a lot of time coding. They have the innate ability to incorporate other people's work into their own and to rely on easy solutions rather than making a new solution from scratch. Each time I resolve to write some custom script, I inevitably find that somebody has already written a similar script, and I need merely change the settings to make it work for me. Some people find coding fun (and it is in a way, at least the baby code you find on web pages). But often it takes a good amount of time for something to work exactly right and to plan for extreme cases.
An idiotprogrammer therefore is an expert at using the work of others. The problem of course is that using the work of others increases dependency. If you've incorporated a module from someone else, inevitability bugs will arise, or special configuration is necessary, requiring you to immerse yourself in code you half-understand or just ditching the module altogether. That inevitably means following what others have to say about a product and whether they are having problems. I often end up having to evaluate a product's worthiness by looking at the support forums, the number of releases it has gone through and the number of developers on the team. That is often a subjective judgment! Many developer sites like www.hotscripts are particularly good about letting users rank or comment about an open source project. These are some questions a system administrator or programmer uses to evaluate an open source project.
My second explanation is more philosophical and relates to the perennial battle of technology vs. humanity. Advances in technology can save time and provide convenience, but they also succeed in increasing our sense of helplessness. I've said it before, but I am amazed whenever I turn on a computer and the thing actually works. How many times have you vowed at the start of a day to do something only to be sidetracked by some totally unrelated technological glitch? Welcome to the 21st century! Lately, I was trying to create a system backup plan, when I discovered that before I even started ,I couldn't send mail anymore! Whoa! Mozilla Mail client had been working fine, but suddenly one day the smtp settings just stopped working. Oh, yes, perhaps I did something to cause it, I don't know.
So I'm faced with an existential choice: do I overlook this problem
and vow to get around to it later? Or do I fix it now? OK, I need my
email, but can't I use my web-based email in the meantime? The more
devices that we equip ourselves with, the more time is required to
appease them. I say this as someone generally enthusiastic about
technology. But do we spend the time to fix things? Fixing things
gives experience, and that is good. But do I want to waste my time
educating myself about USB controllers or multisession CD's or digital
camera firmware? The truth is I don't really care. I remember once
turning on my brother-in-law's computer and finding that Windows 95
flashed 5 error message onscreen before it had finished booting. I
mentioned it to my brother-in-law, a person not stupid but rather
naïve about technology. "Oh, yes, those things always pop up," he
said. "Can you fix it?" I remember laughing silently at his
incompetence while I tried troubleshooting the problem. Three of the
error messages related to a printer that couldn't connect, but which
actually was connected correctly. The other messages related to an
application that couldn't connect to the central server, but of course
it couldn't-there was no internet connection and no way to turn the
default settings off. It quickly became apparent that the machine
worked perfectly fine, and that these error messages were vestiges
from programs or hardware which had already been removed. Stopping the
error messages at boot would require a substantial amount of time, so
I did nothing. Nothing. My brother-in-law booted his machine every
day and tolerated the warnings without doing anything about it. I, on
the other hand, spent an hour on troubleshooting before concluding
that it wasn't worth the effort to fix. The question then is: which
of the two of us is the idiot?
You can find more recent writing in my idiotprogrammer weblog. Often essays which appear on this page originally appeared in the weblog.