
Learning to code can feel like an intimidating challenge. It's made worse by the gatekeepers — the programmers out there telling you that only "STEM people" can or should learn programming.
Some of this gatekeeping may well-intentioned. The idea that everyone should become a software engineer is as silly as the idea that everyone should learn any other trade. The dream of doing a quick coding bootcamp and jumping right into a high-paying programmer job is more marketing than reality.
But "don't learn to code" articles tend to miss a pretty basic point: Learning to code and becoming a full-time software engineer are two different things.
Many people interested in learning to code are looking at other professions, like data science. Others are simply interested in adding some skills to their skill set, automating some of their work, or pursuing a fun hobby or side hustle.
Obviously not everyone can become a software engineer, but that's not because it's some arcane science that only the tremendously gifted can understand. It's just because the world doesn't need that many software engineers.
Anyone who wants to can learn to code and reap some real benefits from it. Coding skills are used every day by many, many people who aren't full-time software engineers.
And despite what you might have heard, you don't have to be a "math person" or a "STEM person" to learn to program.
You Don't Have to Be a "Math Person"
The idea that learning programming requires being "good at math" is considered common sense by some people. It's even codified in our education system — many university programming courses have advanced math courses as prerequisites.
But a study published by Scientific Reports in March of 2020 points out that the existing science on math skills being helpful for learning programming is "inconsistent." And in their own research — a study of 36 individuals who learned Python online in ten 45-minute sessions — and found that an aptitude for learning human languages was a better predictor of success than mathematical aptitude.
The Python learners who did best tended to have strong language-learning and reasoning skills. Working memory and resting-state brain activity were also predictors of higher Python learning performance. Math aptitude does seem to help, but only barely — its effect was not as strong as any of the other factors.
That's not to say that math skills are useless, of course. Depending on what you're hoping to do with coding, some level of math knowledge is going to be necessary. But this study suggests the idea that you cannot or should not learn to code if you're not a "math person" is nonsense.
As one of the study's authors pointed out in an interview with Science Daily, the idea that learning to code requires a math background has become a bit of a self-fulfilling prophecy. "Many barriers to programming, from prerequisite courses to stereotypes of what a good programmer looks like, are centered around the idea that programming relies heavily on math abilities, and that idea is not born out in our data," lead study author Dr. Chantel Prat told the publication.
Anyone Can Learn to Code, But There's a Catch
Here at Dataquest, we teach Python and R programming interactively online to people interested in learning data science. We've seen thousands and thousands of learners, people of every conceivable background, work through our courses, learn to code, and meet their learning goals.
The catch is that while you don't need a math background, you do need motivation. Finding the right learning platform can make it smoother, but learning to code is hard. At times it's going to be frustrating. If you don't have a good reason to learn, it becomes very easy to convince yourself to quit.
For that reason, it helps to get specific. If you want to learn to code, you absolutely can. But why do you want to learn to code?
All of these are good reasons to want to learn to code. What's important is that you choose something that's specific to you that's going to keep you interested. Ideally, your motivation will also point towards a project or projects that you can break down into smaller steps, so that you're actually accomplishing your goal in small steps as you learn.
You can read more about this motivation- and project-based approach in our articles on how to learn data science, how to learn Python, and how to learn R.
But the big takeaway is that you need a personal, real reason to want to learn. If you're just learning to code because someone said you should, or you read an article saying coding is an important skill, you're probably going to struggle to reach the finish line.
Want to Learn to Code? Pitfalls to Avoid
There are a lot of ways to learn programming, and plenty of great places to do it (Dataquest is one of them and we hope you'll consider us).
But just as many people have the misunderstanding that you need to be a "math person" to learn coding, there are also many misunderstandings about how you should learn to code. Here are some platform-agnostic tips for anyone interested in learning to code in any language for any reason:
Find a good motivation, follow these tips, and you'll be well on your way to learning to code! Don't let anyone tell you that you can't, or that you need to be a certain type of person. Anyone can learn to code.

Charlie is a student of data science, and also a content marketer at Dataquest. In his free time, he’s learning to mountain bike and making videos about it.