Can Anyone Learn to Code?

Today, I read something that made me sad. It was a post that argued only some (special, smart, talented) people have the innate ability to learn to code. You either have this magic coding gene, or you don’t, and if you don’t have it, please give up now.

I passionately believe that post was wrong, and I want to share my experience as a self-taught developer to help dispel this idea. I am just one data point, but it only takes one experiment to prove a theory false. To be clear, I don’t think anyone can learn to code. I think only special people with a lot of grit can do it, but I think anyone can decide to be gritty!

TL;DR: It is not your mind. It is your mindset.

Myth 1: You need to be a “Hacker”

Before I started learning to code, I knew very little about computers. I had “Microsoft Office” listed on my resume (I wish I was joking). Growing up, my parents thought screens would give me square eyes, so I never so much as killed a Tamagotchi.

There are no “I’m self taught but have been hacking on the mainframe since I was 9” disclaimers here.

Before starting my coding journey, I was the furthest thing from a Hacker imaginable. I was a girl who likes to bake cookies, typed with 2 fingers and was a little bit nervous of browsers because, you know, anything can happen on The Interwebs. So I consider this one busted.

Myth 2: You need to be “Smart”

This is the hardest myth for me to dispel, since people love to point to the story of how I met my husband at a maths weekend as proof that I have the Magic Gene. Now, this is not imposter syndrome talking. I am talented at lots of things but have relatively little innate mathematical ability. I got to be alright through brute force and my mom’s insistence that talent next to effort was like stars next to the sun.

As for that maths event, I failed the qualifying test by a long way. I only went because I begged Mr Agassi to send me along with the actual selected team. It was amazing — I learned a lot and met the love of my life and I should really send Mr Agassi a box of chocolates. It was also irrelevant. A test can’t tell you where you’ll end up any more than you can estimate the slope of a line from only one point. There is no stamp of “You are Smart at X” — you might be more or less gifted at any given point in time but you can always improve. So it goes with coding.

Myth 3: It is Easy and Anyone Can Do It.

This is the kicker. It was not easy and a lot of the time, it was not fun. This myth is the worst maybe, because slogans like “anyone can learn to code” and “learn to code in 3 months/8 weeks/1 day” just reinforce the idea, when it get starts to get hard, that it’s because you are lacking in magic sparkle and that you should stop (and not because it just is hard and you are finally starting to learn so keep going!). After all, if anyone can learn to code quickly and easily, why would anyone expect to struggle?

I keep this picture on a pin-board above my desk because it’s not that good. It’s quite boring and the perspective is a little off. Its one of hundreds of average paintings that show this guy Vincent, in the painful, slow and unglamorous process of becoming Van Gogh.

For me, learning to code was a struggle. Most days, my mind felt like a ballerina’s feet (I would insert an image here but frankly, it’s disgusting). I was constantly boggled and bamboozled and I felt really stupid every single day and I did often cry over my laptop. Yeah. Learning a new skill is like fitness — it’s a no pain no gain situation. There was a ton of pain.

The “flow” went something like this: write code → Wut? it breaks/acts weird → fumble around on stack overflow → try some stuff → it breaks or gets weirder → stack overflow some more → finally it works.

At the time this felt like everything was going over my head and it took a full year of fumbling in darkness before I felt like I understood anything. Then one day I just woke up and everything made way more sense. The flow was (for one magical step!) write code → it works! It felt like I had learned how to code overnight. Now it’s much quicker to learn new things because the base layer of knowledge has finally settled.

Learning to code is (I say “is” because it’s ongoing) the hardest, and most deeply satisfying thing I have ever done. Often, my code breaks, but after that magic day, I know what to Google. I still stumble around a lot and I have heard from others that this is quite normal. Mastery will come!

This is the part that separates out who can and who can’t learn to code. The Not Giving Up part. The Grit. To have grit, all you need to do is to be gritty.

Disclaimer: I had a lot of help too. Sometimes, I worried it was bad because I should figure it out on my own, but ultimately decided it’s just another way to learn and much better than being stuck on some silly bug for three days. If you have no-one to ask for help, email me at I promise, I will help you. If you’re interested in the resources I used in learning, they’re here.