Wow, this was an easy blog post to write.
I suppose a longer answer would be more satisfying.
I have no idea how old you, the reader, are but that’s irrelevant. No, you are not too old to learn programming. If you wonder if you are too old to become a professional software developer and are under the age of 50, the answer is still no. (And even above that age, the answer is merely “probably”.)
But you might feel too old, or at least feel forever crippled because you didn’t start coding the instant you developed fine motor skills. But I still assure you: You are not too old to learn programming.
“Software development, like professional sports, has a way of making thirty-year old men feel decrepit.
-Neal Stephenson, “Snow Crash”
I have a two stories to tell. The first involves me in high school. I was a nerdy teenager who wanted to become a “leet” computer hacker. I had rudimentary knowledge of Qbasic. I had started to make some GUI programs with my pirated copy of Visual Basic 4. I heard of 2600 magazine (“The Hacker Quarterly”) and started going to the meetings on the first Friday of the month at the mall.
The first time I went, I felt like everyone was smarter and more knowledgeable than I was (and they were). I resolved to hit the books and study continuously so that for the next month’s meeting, I wouldn’t feel like such a noob.
This feeling did not go away by the next month’s 2600 meeting.
This feeling did not go away for the next several dozen 2600 meetings.
Half the days I wake up, I still feel shockingly unprepared and ignorant about the skills that I am paid a salary for. That feeling is perfectly normal. Everyone in the universe has that.
Computing is a field that is effectively infinite. It is easy to despair that you will never reach the horizon no matter how long you travel but realize that this feeling like you’re a clueless idiot, to a certain extent, is O-K. And don’t forget about the many miles you can accomplish.
The second story is about how I first learned programming. I was one of those people who started learning programming in the third grade. My friend had found Fred D’Ignazio’s book, “Invent Your Own Computer Games” at the school library, and this was the book that taught me programming in BASIC by making small games. I was already addicted to Nintendo, and immediately took a liking to programming and began to make a few of my own games.
Here’s the thing though. Most of the games I made were just slight variations of games that I had already seen in D’Ignazio’s book. And I never was able to wrap my head around the Tic Tac Toe AI he presented in that book. My programming aptitude for the next several years didn’t really improve all that much. It was a fun hobby and maybe it did give me a slight edge, but looking back on it now I can’t help but think, “You’ve been programming since you were 9? So what? All your programs back then probably sucked.”
Mine sure did. The reason I wrote “Invent Your Own Computer Games with Python” was because there were so many different advanced concepts I would have been fully capable of learning, but I just didn’t have access to approachable resources. I didn’t even know what to look for. At this point though, the amount of programming knowledge I gained between the ages of 9 and 18 could be obtained by anyone with an internet connection who committed to study a couple hours a day for three or four months. Or even shorter if you find programming to be fun, because it’s easy to kill a dozen hours coding on a weekend.
Those years of “programming since I was 9″ didn’t really matter that much in the long run. What difference it did have was it showed me that programming wasn’t an impossible skill to acquire.
The reasons I market “Invent with Python” as a book for kids is because 1) kids, in fact, can learn programming and 2) so adults will think its possible for them to learn. There’s a large mystique around software development that repels a lot of people who don’t think they’re qualified since they aren’t silicon valley geniuses or because they say “oh, I’m not really good at math”. The largest hurdle to programming that I’ve encountered in people isn’t intellectual so much as psychological.
Learning to code is much like learning to play a musical instrument. Yes, it does take hours and hours of concerted practice. But even if you don’t do it professionally, it’s still fun and enriching. It helps to be Mozart and start at the age of five with a pushy composer father, but it is far from necessary. By the time you reach my level of experience and knowledge, you will realize how silly the “am I too old?” question is.
No, you are not too old to learn programming.