Friday, September 7, 2007

Why Am I Not a Programmer?

I was recently in a meeting where I was enumerating what I did well and what I didn't. Although I have a lot of skills, there are some things I just don't do well. In user experience terms, those are primarily programming and graphical design. I can do both, but haltingly, and others do them much better, so I have a tendency to avoid them. At least with graphical design I tend to compare my meager skills to those I see on display on the finest pages, so perhaps my bar there is unreasonably high. I've never had much coursework in graphical design, at least in the past two decades, so I have little basis for comparison.

I have taken courses recently in programming, though, so I think I'm more realistic there. Java drove me crazy. I'd be looking for a method in the documentation so I could find its arguments, and to my annoyance I'd have to trace it up the tree several classes, because it was inherited a dozen times. The classes weren't hard, just tedious, frustrating, and boring. I've had the same problem in other programming classes. I was probably the only English major in history to sign up for assembly language programming class. It went OK, but I didn't feel any affinity for the subject. No spark. No gift. I concluded I would never be much good at it, and that was that.

But after my meeting, I started to reconsider my position, especially after I talked with a programmer and looked up some "how to think like a programmer" pages. To my amazement, it appears programmers don't like to code much more than I do. It's just that to solve their problems, which they love to do, they have to code.

It reminds me of my mathophobic days. Although I teach statistics now, I was once afflicted with math anxiety. That cracked away after I abruptly realized what math is. It's a modeling language, with enormous lossless compression. You can model reality with it, sort of. Once you learn the language, the rest is just fiddling with it until any given equation makes sense. Even mathematicians diddle and doodle. There are no born mathematicians, only those who have messed around with it for a long time until it's easy for them to manipulate the linguistic symbols. There may be a math aptitude, but no math gene. I could do it too.

Maybe programming is like that and I'm being too critical with myself. I have yet to meet anyone who enjoyed programming courses and having to memorize languages, any more than I've met mathematicians who liked algebra classes. The essence of math is modeling; the essence of programming is problem-solving. Indeed, a lot of programmer-pundits say that formal college training in programming is counterproductive, because it confuses syntax with thinking. Many advocate starting programming careers by learning calculus, linear algebra, or even physics, just to get into the swing of thinking through complicated problems. Maybe I don't want to earn my living inside a compiler, but maybe too I'm too hard on myself when I sneer at my programming skills. Maybe I'm not much worse than anybody else.

No comments: