The Humble Programmer

I ran across a reference to E. W. Dijkstra’s 1972 essay “The Humble Programmer” recently. I’d never read it before, but I like to think I already understood the concept. Any sort of serious programming job is going to reinforce a programmer’s humility on a fairly regular basis, unless the programmer in question is incredibly good, or incredibly deluded.

The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.

At my current job, for the ERP system I work on, we do production deployments once a week, usually. We may do a post-deployment fix or supplemental deployment occasionally, but usually only if a really show-stopping bug made it in. (The deployment process is apparently time-consuming and arcane. I don’t really know how it’s done, exactly, but I think it involves ritual animal sacrifice and long incantations from the Necronomicon.)

I managed to introduce two exciting bugs into the system in last week’s deployment. So this week’s deployments include:

  1. A fix to a problem that I knew would occur, under a certain set of circumstances, but which I thought would probably only occur once in a blue moon, if ever. Instead, it happens about 20 times a day. One user referred to it as “really really really frustrating” and “a horrible inconvenience” in a support ticket she opened.

  2. A fix to a problem that had never even once occurred in testing, and which I have still never been able to recreate in testing. In production, of course, it happens about 10 times a day. And since I still haven’t been able to recreate the issue in the test environment, I can’t really be sure if the “fix” actually fixes the problem.

So, basically, my errors have been annoying the heck out of our users for the last week, and I have once again been reminded that I am fallible, sometimes spectacularly so!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.