Am I smart enough to become a developer?

This blog was originally published on Substack. Subscribe to ‘Letters to New Coders’ to receive free weekly posts.

Many aspiring developers ask themselves: “Am I smart enough to become a developer?”

I actually hate this question.

It’s rooted in myths about what it takes to be a developer — not in reality. Developers are by no means geniuses. We’re not smarter than the average person. We’re actually just regular people from various walks of life (and you can join us too).

I’d go so far as to say that asking this question is like relinquishing control over your destiny. There’s no reason you should be in the backseat of your potential coding career. You should be behind the wheel steering yourself.

But I get it. If you’re asking yourself this, you’re trying to assess whether you have the right foundation to be a good coder.

So today I want to talk about why I believe “Am I smart enough to become a developer?” is the wrong question to ask — and what question you should be asking instead. (Hint: it’s not about smarts, it’s about motivation and work ethic).

First, let’s debunk some myths about what it actually takes to become a successful developer.

Drop the dogmas

If you’ve wondered if you’re smart enough to become a developer, it’s time for a reality check.

When it comes to programming, people have created dogmas, or beliefs, that tend to be exaggerated. If you buy into these dogmas, you might alienate yourself from your potential as a developer.

For instance:

Developers are smarter than average.

False.

Developers are by no means geniuses. We’re simply trained, over many hours, to use technology to solve problems. But even then, the most skilled developers still struggle. We fight bugs and make mistakes every day. It’s just part of the job.

I worked on various teams at Microsoft and Facebook, and I could cover a wall with the coding bugs that stumped not only me — but my entire team — for several months. Whenever we meet up, my old colleagues and I still look back and laugh about some of these bugs. Most of the time the culprits were right under our noses.

You don’t need to perform superhuman feats to learn to code. In fact, you already possess the most essential developer skill: problem-solving.

At its core, software development is about solving problems in the most efficient way possible. Developers assess what an application needs to do to serve its intended user, then map out the steps that need to happen to achieve that result. The most important part of this process is breaking the problem into its component parts and planning out the right steps. The “coding” part is merely the last step where you translate those steps into a format that a computer can understand.

Whether you’re planning your commute around road closures or planning out your budget, you’re already solving problems like a developer would every day. In fact, one of the most impressive problem-solving feats I see every day is how efficiently grocery clerks can bag my items at the store. It’s a smaller step from there to learning how to code than you might think.

Here’s another coding myth I hear all the time:

Developers have to be math experts.

False.

When I was just starting out, I was terrified about the math I’d face in my programming education. When you say math, I hear calculus and differential equations — topics that gave me fits in high school math. Our minds tend to associate monsters with everything that we have struggled with. But the math that the average programmer needs is way simpler than calculus. In fact, the math that most developers need is even simpler than algebra. Don’t let the math monster in your head deter you from becoming a developer.

The truth is: if you are over 13 years old and went to school, you already know most of the math needed to break into coding. Maybe pre-algebra is the kind of math that’s needed sometimes, and even that’s not required. You are almost there if you can add, subtract, multiply, divide, and calculate remainders and quotients.

Don’t get me wrong: some specializations need more advanced math. Careers like Machine Learning engineering or data science will require higher levels of math, ranging from statistics to linear algebra. But even if these are your goals, don’t let the math scare you away. Be open-minded and give yourself the opportunity to grow into these new skills.

Bottom line: Your success isn’t going to be determined by your IQ level or your math background: it’s determined by your resilience. Even a 2019 study from Microsoft called “What Makes a Great Software Engineer?” found that technical skills aren’t the most important thing when it comes to predicting success. Instead, the findings reported that great developers shared soft skills and personality traits such as perseverance, curiosity, and open-mindedness.

So, what’s the right question to ask?

Let’s revisit our initial question: “Am I smart enough to become a developer?”

This question is loaded with myths and fallacies about learning to code. If you are serious about learning to code, it’s not the right question to be asking.

The only question you should be asking yourself is, “Am I motivated enough to become a developer?”

Everything else is irrelevant.

I don’t know a single developer who didn’t work hard to get where they are today. While some developers found that programming came a little naturally to them, others struggled for years. Most of us fall somewhere in the middle.

It’s important to be realistic about the trials and tribulations that come with the programming journey. You’re going to make very obvious mistakes. You might get stuck on a problem or a bug that makes you want to walk away from your code for a week. It happens to the best of us. Just remember that to get through, you don’t need uber math skills or programming savvy — what you need is humility and persistence.

Motivation → Action (but don’t expect miracles)

To check if you have the aptitude for programming, get your hands dirty (or your feet wet).

Commit to your decision to learn to code, and see it through. Don’t overthink it. Remember: all you need is to put in the work.

If you’re really motivated, you need to:

  • Budget time to study every week
  • Be consistent
  • Invest in good learning resources or programs
  • Say “no” to some activities to make time for that studying

In this sense, learning to code is not so different from learning any new skill.

The not-so-good news: there’s a lot to learn.

The not-so-bad news: nobody figured it out the first time. Everyone struggles, at least a bit. So if you’re struggling, remember that you’re on the right track.

Don’t expect miracles. Think of it like signing up for swimming classes. The goal for day one of swim class is to get comfortable in the pool. That’s it. The actual swimming starts later (sometimes much later… and that’s okay). Similarly, you won’t be writing real applications anytime soon — at least not for the next few weeks. You would just be learning the basic constructs of how to write programs, and the fundamental building blocks of how programming languages work.

If you have gotten this far, you have already taken the first step. If you are ready to take your next step, get your hands dirty with some basic problem-solving skills here.

Happy learning!