I hate telling the story of how I learned to program.
In the third grade, a friend showed me a book he found in the school library on making small games in the BASIC programming language. I was obsessed with Nintendo and got hooked on the idea of creating my own video games. I began programming and stuck with it, majored in computer science, and afterward became a software developer and tech book author.
My story reinforces a common and misleading notion about what it takes to become a programmer. You've heard it before: the smart kid who learned to program before they could walk and goes to write an app that makes them a dotcom millionaire. Or the prodigy with mediocre grades because they spent their hours on a Nostalgia-Whatever-64 PC and skipped university to go directly into industry. These geeks-who-inherit-the-earth stories of tech millionaires and billionaires can be found all over pop culture.
On the surface, my story sounds a lot like that. These accounts make it seem like if you didn't start early, didn't complete your 10,000 hours of practice by the start of adulthood, and didn't major in computer science (or drop out to found a startup), you will always be at most a mediocre software developer. I see this in the perennial "am I too old to learn to program?" posts on coding forums I browse. The answer is of course "No," especially when it comes from the anxious posters who admit they are already (gasp!) 24 years old. The folly of this worry was perfectly captured by one satirical post: "I am already a zygote. Is it too late to start a career in programming?"
I can say with authority that this worry—and the pedestal we place young programming prodigies on—is nonsense, because I know the truth of my own programming journey. I may have started in elementary school, but the fact is my programs hardly developed in sophistication over the next nine years until I graduated high school. Mostly this was due to Web 1.0 times: There was no Wikipedia, StackOverflow, or Creative Commons-licensed books available. I had a nice head start, but it doesn't count for much compared with today's resources.
Everything I learned about programming in the nine years after the third grade can be learned by anyone with a dozen or so free weekends. When I hear someone casually brag that they have been coding since grade school, my eyebrows give a skeptical furrow instead of an impressed raise.
That a third grader can program is impressive, but the programs I wrote certainly weren't. They were mostly variations of the guess-the-number type of games that I copied from that first school library book. When I come across "12 Whiz Kid App Developers" or "8 Teen Techies to Watch" listicles, I've learned to take a closer look. The software produced by these young people rarely lives up to the hype. Luck plays a huge factor in their stories: They had the right idea for a simple app at the right time that captured the spotlight before fading, like the Flappy Bird fad.
Which isn’t to disparage their abilities: they still had to program the software. But I want to deflate the idea that young prodigies commonly produce software at the same level of experienced engineering teams. Not all kids will publish apps, but that doesn't mean that not all kids are capable of it. The most valuable thing I learned as a kid was that programming wasn't an impossible, cryptic skill to acquire. The reason I could learn programming as a child was because I didn't know it was supposed to be too difficult for children. Unfortunately, many adults have managed to convince themselves that programming is too difficult for adults who didn't start learning as toddlers.
This is a misconception I want to eliminate, because computers have great potential unlocked with coding ability. I wrote Automate the Boring Stuff with Python not only for complete beginners, but also for those who don't necessarily want to become software engineers. There are plenty of ways programming ability can boost productivity in other professions and for home hobbyists. The book is released under an open Creative Commons license: Anyone can read the full text online. Rather than learning to code for the sake of learning, the book focuses on automating practical tasks that computer users previously had to complete with a lot of tiring typing and clicking—the sorts of tedious tasks that programming can complete for you if you don't have an intern to do them (or if you are the intern tasked with them).
Computers have become central to daily life. If you spent every day in chat rooms with your friends 20 years ago, you were a nerd. Today if you do the same thing, you're just the average Facebook user. Not everyone has to become a software engineer, but coding ability is becoming more relevant. And with that, a lot of people are anxious that it's too late for them to climb on board.
One unintuitive and underappreciated fact is that even though computers have become more powerful, sophisticated, and complex, learning to program has become easier. Vastly easier. Modern programming languages manage away a lot of the tedious technical details. A computer science degree helps, but is by no means a necessity for writing simple apps or small time-saving scripts. The Internet has a wealth of tutorials, all of which are easier to find now than in pre-Google days.
So if you've been interested in learning to code, but intimidated by the brain-science, rocket-surgery reputation of programming, worry not. You are not too old to learn to program.