How I know if programming is for me?
(Be sure to check out part 1 of this series if you haven't already).
Maybe you've already gone far enough into programming that you know the answer to this question. But I've found many fledgling programmers, or people considering taking a programming, who aren't sure if they are heading down the right path.
People learn programming for a variety of reasons. Most people get into it for career reasons, but even so, the attraction of a programming career varies. For some, they see the figures from the Bureau of Labor Statistics explaining how many programmers will be needed in the future, and how much money they make, and think: here's a good job. Others might see the results of programming, such as a video game, and think, the result of the programming looks like fun, I'll bet the programming is fun, too.
Some people get into programming out of a sense of curiosity about how computers work. Others might have no expectation of a full-time career in programming, but think that learning a little programming will help them in their other tasks. As the use of computers has grown in medicine, for example, I've had many students who are also doctors or otherwise employed in the medical community who want to learn enough about programming to write database applications or macros to assist them in the management of their practice.
Of course, having a good reason for wanting to be a programmer doesn't mean that you will be a good programmer. So what are the indicators that programming is something you should pursue? Unfortunately, there's no way to know for sure until you actually get into it. In all my years of teaching beginning programming, the best indicator for long-term success I've seen is the student's level of enjoyment. A good programmer enjoys programming. I don't mean that every act of coding will bring unbridled joy, or that programming is fun in the same way that playing a favorite sport or video game is fun. But there should be a real pleasure in seeing one's program working, even if the program is a pitiable little thing that accomplishes almost nothing.
When I finish the term of a first programming course, I sometimes have students who are asking me to evaluate them on their long-term chances. The truth is that the best indication of long-term success isn't a student's grade in the course, although of course a high grade is a good sign. The best indication isn't how good those first programs are, although again, well-written programs at that stage are another good sign. No, the best indication is whether or not the student is looking forward to taking more programming courses. Often, at the end of that first programming course, I'll have a student that is battered but eager, looking forward to the next challenge. That's a student I feel good about going forward. It's when a student tells me, "I really want to take a break from programming next term," that I get concerned.
Or let me put it another way. Probably just about anybody could become a pretty good programmer if they work hard enough to become one. But make no mistake about it, programming is tough mental work. If, on some level, you're not enjoying the work, you're never going to be able to focus on it long enough to master it.
The moral of this story is, if you've never programmed before, and you think you might enjoy it, you should give it a try and find out if you're right.
Here are a list of things some might think would have some impact on the chances of a particular person's success as a programmer, but that in my experience, don't count for much of anything:
Demographic background. You may or may not think you resemble the stereotypical image of a programmer, but that has no bearing on your potential for success. I've taught Americans of every stripe, as well as students from countries all over the world. Although I sometimes notice trends in terms of learning styles, or the way they communicated with me as a teacher, I've never seen any trends in terms of ability. Good programmers can come from anywhere.
Let me also say something specifically about women programmers. As I said above, the best indication for programming success is genuine enjoyment in the task. It may be that men, taken as a group, enjoy programming more than women. But this makes no difference for a woman (or girl!--never too early to start) who wants to try her hand at it. Women who enjoy programming are just as good at programming as men who enjoy programming. So if you're a woman who is interested in programming, you are exactly the sort of person who should try it out. And there are lots of other women in programming already, so you don't have to worry that you'd be alone.
Mathematics. Computers are just machines that do things with numbers, so it's natural to think that programming skill and mathematical skill must be closely related, but that's not really the case. There are lots of excellent programmers who aren't particularly good at math. Also, there are lots of people who genuinely enjoy programming who do not enjoy math at all. In my own case, although I learned to program at an early age, and programming has always seemed natural to me, math was typically my worst subject in school, and my lowest score on standardized tests. I remember the exact moment, explaining a tricky concept in discrete mathematics, when I suddenly realized that I actually enjoyed math -- I think I was about thirty years old.
Computer Use. Unfortunately, just because a person really enjoys working with computers doesn't mean he or she will enjoy programming. I guess the reverse is true, though; if you don't like technology, you probably shouldn't try to learn programming. But I don't know that this ever comes up!