Programming for fun and profit 

It's time for a discussion of software engineering or, rather, software engineers. This should be entirely accessible to those who are not software engineers or, indeed, so-called computer people. The issue at hand is why one would or should program a computer.

First, why does anyone program? In general, programming is done for fun, for convenience, and/or for a paycheck. (Incidentally, when I say "for convenience" I mean programming to simplify some task that could be done without the need for programming where the requisite programming is not central to the task at hand.) All competent and experienced programmers are in it, at least in part, for fun. I would claim, in fact, that one cannot become a good programmer without finding enjoyment in it.

That's hardly an earth-shattering revelation, since the best workers in any field are those with a passion for the particular work. Nonetheless, an astonishing number of people have received degrees in computer science and pursued a programming career without any love for the work. Now that the whole dot-com boom has busted there are fewer going that route (many who otherwise would are now heading for biotech), but there are lots of mediocre coding grunts out there already.

Why follow a career path you don't enjoy? Why struggle at something you don't love and can't get especially good at? I knew dozens of people like this when I was an undergrad, and I know many others now. I'm even friends with some of them. I just don't understand them.

In some sense, I suppose I'm bemoaning the Peter Principle; these people have just reached their level of incompetence early in their careers. I am, however, of the opinion that being good at something one enjoys is worth far more than being mediocre at something one does not enjoy, even if the less pleasant job pays more. If you are a good retail manager, and you enjoy the work, why strive to be a mediocre programmer and hate your job?

Even worse, however, are those who really do enjoy programming, but aren't any good at it. Let me amend that. I really mean those who enjoy programming, aren't any good at it, and are a burden while they try (and possibly fail) to get better at it. They submit terrible patches to open source projects (or, worse yet, start their own). They waste half an hour (or an hour, or three hours) of a competent programmer's time with newbie questions to save an hour (or two hours or five hours) of their own looking at documentation or other references (and I don't mean posting to a mailing list or newsgroup, where anyone who spends time on it does so voluntarily, I mean direct interaction with a specific person over email, IM, phone, or in person). They write bad code and expect it to be integrated into that project at work with no further work on their part.

I'd like to believe that the people who hate what they do, programming included, can learn to like it. I'd like to believe that incompetence is a passing phase for those who do enjoy their jobs but aren't good at them. I'm just having a little trouble believing either.

What it really comes down to is how and when one chooses a career. When I chose to major in computer science in college it was because, upon looking back at my high school career, the only subjects I cared about and worked hard at were computer science and chemistry. (I very nearly chose chemical engineering, but it was more convenient to take CS courses my first semester and I found that I enjoyed them tremendously.) Looking back even farther, I had a chemistry set at an early age and I learned to program BASIC with my father at age six. If I had chosen some largely unrelated major, say biology pre-med, I might have made it into med school and gone on to be a doctor. Of course, I probably wouldn't be happy about it, even though I'd be making lots more money than I am now.

As with most most life-defining decisions, choosing a career requires some serious self-knowledge. If you don't know what you want out of life, and what you enjoy in life, it is hard to make a career decision that will take you there.

This page is powered by Blogger. Isn't yours?