Here are tips to learn coding in a more efficient way. They are backed by research in Neuroscience, Behavioral Psychology, and over a decade of experience.

You can spend months going to the gym and still see zero results because of how you work out.

Most of us know this.

The same thing applies to coding.

You can spend months learning, trying different things, jumping around tutorials, and still feel like you're a beginner – at best, an advanced beginner.

And it hurts.

This makes you wonder if there's a way to learn faster, better, more efficiently.

There is.

But first things first.

“Speed will follow when the mechanism of the movements is more assured.”
Rafael Sabatini

If you don't understand the fundamentals of learning, it doesn't matter how fast you go, you're still building on a shaky foundation. And you don't want that.

So with that, let's get to it.

The 2-minute tutorials

If I told you there was a 2-minute tutorial to help you master JavaScript right away, would you check it out?

Whether you answered “yes” or “no” , it doesn't matter.

That is, provided you understand deep down that a short tutorial alone goes against the principle of mastering any domain.

Here's how mastery works in a nutshell:

  1. Start with a huge information dump.
  2. Compare new learnings to what you already know before.
  3. List out the ways that old and new info differ.
  4. Test yourself by creating your learnings from scratch.
  5. And finally, teach someone else.

This. Takes. Years.

That's why shortcuts alone won't cut it.

So the next time you see a once-in-a-lifetime tutorial promising you mastery in one fell swoop, remember that at best it is merely giving you information dump.

Internalize this and your foundation will be solid.

Then speed will follow.

How do you deal with struggling?

Image credits

I’ve seen people quit programming because they don’t want to struggle with bugs.

That’s like hating the gym because you don’t want your workouts to hurt.

But the fact is this: you don’t run from bugs – you train yourself to find them quicker.

Because a proficient programmer is simply an efficient detective of bugs.

Every time you feel frustrated by bugs, remember that this is where a learning opportunity opens up. Don't skip it.

“Toleration is the greatest gift of the mind; it requires the same effort of the brain that it takes to balance oneself on a bicycle.”― Helen Keller

Neuroscience research confirms that practice doesn’t simply make you perfect – it is deliberate practice to improve in a specific task that makes you better.

And deliberate practice involves struggling. With bugs.

So your expectation shouldn't be to code flawlessly.

Rather, your mantra should be:

  • You code.
  • You debug.
  • You struggle.
  • You overcome.
  • And you repeat.

The earlier you embrace this, the more efficient your learning becomes.

So if at this point you’ve not struggled at all, you’re simply playing around. And wasting time.

But if on the other hand you feel like you struggle every single time, then the next section is for you.

You’re not dumb, you’re learning at the wrong level

Let’s start with a little analogy.

Imagine learning the English language (the language of exceptions).

You start with a tutorial motivating you to learn to spell big words like ELEPHANT.

But it’s not working.

After beating yourself for so long you decide to go to a lower tutorial and learn to spell smaller words like ANT.

But then you still struggle.

So you conclude that you’re dumb because you lowered your tutorial level and still didn’t grasp anything. You have proof – negative proof.

But when a new teacher investigates why you’re struggling, they find out that you’ve been struggling because...

You actually don’t know the English alphabet.

Image credits

Let's bring this back to coding.

Some people jump into beginner tutorials to immediately start learning React or Angular (ELEPHANT).

Then realize it makes no sense so they move on to learn JavaScript (ANT) as introduction to the world of programming

But that still makes no sense to them, so they quit.

“I'm so done with learning to code. This is clearly not for me.”
Image credits

But they’re simply working with something that’s too advanced.

Even introduction courses can be advanced because your thinking is not yet wired to programming in general.

I don’t see this recommended enough, but if you’re struggling with intro courses, you should consider Intro to programming for kids.

There’s no shame in finding something lower than intro courses and starting from there to build up.

Learn with tools like:

Since you’re older, you’ll likely go through them faster.

But they’ll give you the much needed soft intro that makes sense and builds your appetite for programming.

Again, this has nothing to do with ego.

It’s your learning journey.

If you learn the alphabet first:

It doesn’t matter what discipline or area of coding you jump into, this holds for Intro to Python as much as it holds for Intro to Machine Learning.

You’ll learn more efficiently if you learn at the right level.

Elevate how you learn with spaced repetition

This technique is from research in Neuroscience. I’ll describe it quickly.

Image credits

How it works:

  • You learn.
  • Recall in 48 hours.
  • Then review in 72 hours.

Doing this:

  • You’ll forget less.
  • Connect new ideas to old, and;
  • Retain more in long term memory.

I put 48 and 72 hours as an example, but you can expand that timeline to days and weeks. The most important takeaway is not to simply learn once.

But to intentionally set aside time for you to come back and review.

The longer the delay between reviews, the more it gets buried in long-term memory.

1 project > 10 hello worlds

Don’t get caught up in hello worlds forever.

I understand the thrill of completing simple exercises:

print “I am awesome”
print “You’re cool”
print “Wait, are we cool?” 
print “OMG! Guys! Like I can so print all day” 

But I have to be honest with you, this won’t cut it.

Going back to our ANT analogy, no matter how many ways you rearrange the words ANT, you’ll never arrive at ELEPHANT.

No matter how many introduction tutorials you learn, you’ll never really get past the basics unless you push yourself beyond that.

But I don’t know what projects to start as a beginner.

No worries.

Here are 3 examples:

  • Currency converter: Create a program that converts currencies from one unit to another, for example, converting Indian rupees into dollars, pounds to euros, and so on.
  • Random Password Generator: Create a program that takes some words from the user and generates a random password using those words.
  • Guess the number: Ask a user to guess a number between 1 and 50. If they guess outside that range, show an error message asking them to guess again. Whenever they guess the wrong number, ask if they want to keep playing or they'd like to quit. Finally, when the user eventually guesses the right number, congratulate them and show the number of attempts they had.

If you find these boring, here are other beginner programming project ideas to choose from.

And if all of them seem too difficult or boring, message me on Twitter and I’ll create something tailored to your level.

Remember, this is not about ego.

It’s about your learning level and growth.

Motivation is like taking a hot shower

Taking a hot shower feels good – you should do it.

Image credits

But if your hot water is out for 2 weeks, would you not shower?

The question sounds ridiculous.

But in the same way, you shouldn’t base your learning on only days when you’re motivated.

There are lots of exciting days in coding, but there will also be dark, de-motivating days.

Honestly, this is not just with coding. It’s with life and embarking on any new adventure.

But you have to train yourself to show up not only when you’re feeling hyper inspired, but also on low, boring days.

This doesn’t mean forget motivation entirely.

Far from it. Here's what you should do instead:

On days when you feel super motivated, use your motivation to quickly commit yourself to something big that will keep you accountable when the motivation goes dry.


Join an accountability movement like:



To keep you accountable on slow days.

In Behavioral Psychology, this is known as pre-commitment.

You use moments when you’re optimistic to commit yourself in the future for when you have zero motivation. Use this technique and you'll keep yourself going for a longer period of time.

The journey of learning is never-ending

No one really teaches you how to learn.

The focus is mostly on what to learn. But learning how to learn is crucial if you want to go far.

I highly recommend this course if you want to go deep into the art of learning.

You may have started with the idea of simply learning to code or to one day become a developer.

But there’s more.

Image credits

When you come out on the other side, you’ll come out not just a developer.

But as a renewed person because you’ve picked up a new way of learning and approaching things.

Don’t get me wrong.

This isn’t easy peasy lemon squeezy – you’ll work like hell.

But in the end, it’ll be worth it not just because of coding but because of the joy of transforming yourself.

Thanks for reading!

And that's a wrap. Not going to lie, this took a lot of hours and reflection to put together.

  1. Follow me on Twitter: I'm most active on Twitter. If you enjoyed this, like and retweet this thread to help spread the word. Have questions? My DM is always open.
  2. Join my email community: I'm putting together resources to help new coders and junior developers feel less overwhelmed, manage imposter syndrome and learn smarter. If interested, join this email list.
  3. Want to read more? Check out more of my articles for beginners and junior developers.

Heads Up - I love research, so I tend to back my advice and approach with concepts from Behavioral Psychology and Neuroscience.