Search This Blog

The Programmer's Curse

I have this issue, or maybe it's more of a peculiarity. Let's call it a curse. I like to build things more than use them. This curse is most recognizable to me when I'm programming. It normally goes something like this. I'll be deep in thought, trying to figure out how to fix some bug or add a feature to a program I'm working on. It will occur to me that once I get this part of the program working, I'll have reached a significant milestone, and the program will have enough functionality to be much more useful than it was before.

You may think that such a thought would be positive and motivating, and that used to be the case. But then I would reach the milestone, make sure the program is working properly, clean up and check in the code, and sit back and think, okay, now what? I used to think that reaching a milestone would result in a great feeling of satisfaction, and I would be able to sit and play with the program for a while, enjoying my accomplishment. But what I've found is that the destination is surprisingly anticlimactic.

Don't get me wrong, it is very pleasant to have overcome a hard programming problem and have working code to show for it. But that's not nearly as interesting as tackling the next challenge. It's the next problem that keeps me going and gives me the greatest enjoyment, which is a good thing I suppose, because there's always more bugs to fix and more improvements to make.

I've noticed this curse in other things as well. Take LEGOs, for example. I used to love playing with them as a kid, and now that I have two kids of my own, I figured that would be a good excuse to start playing with LEGOs again. Now I'm realizing that I never really liked playing with LEGOs. I only liked building with them. Once a set is built, the best thing to do with it is take it apart again to build something else. LEGOs are much more interesting when they're in pieces than when they're put together. The problems are limitless, and as yet to be solved. The challenge awaits.

The same thing applies when I'm creating art. I used to do a lot of throwing when I had access to a potter's wheel in school, and the most enjoyable part about it was the act of creating the pots on the wheel with my own hands. I couldn't have cared less about the finished product, except for the occasional exceptionally good piece.

All I wanted was to be in the moment of creation, watching the soft clay spin through the mold of my hands and take shape. Each lump of clay was a problem to be solved, and I thoroughly enjoyed working through every one of them. I could easily produce a dozen mugs or bowls a week working only forty minutes a day, if my teacher hadn't required me to fire and glaze my pieces.

Maybe it's not so much a programmer's curse as it is a builder's curse. I'm too busy building new things to have much time for using the stuff I've already built. Besides, there's a whole pile of improvements to make on any given project. If I'm not chasing down a bug or designing a new feature, I feel like I've been set adrift without drive or direction.When I'm working on the next feature, I have purpose.

I'm learning to embrace this programmer's curse. I no longer think much about how great it will be to get the next thing done. I accept that there will always be yet another thing to do after that, so I enjoy the challenge I'm working on now. When I've solved it, I pocket the satisfaction of the achievement and quickly move on to the next task. It's a matter of loving what you're doing more than what's already done. Every once in a while you'll look back in amazement at what you've accomplished, but the real pleasure is in the moment, here and now.