14 Research-Backed Techniques To Learn To Code 2x Faster
Tags: codenewbie, beginners, productivity, webdev
Published: 2023-03-15 21:18:04

I’ve been fascinated by “how to learn anything faster” since I was 18. 

I found an online course promising English fluency in 6 months (I’m Brazilian).

I was sold.
It took me 10 years.

After studying countless articles and half a dozen books on the topic, In the following 12 years, I learned more stuff than most people will learn in their entire lives.

Some of the things I've become:
* A pencil portrait artist
* Translator
* A qualified carpenter
* A commercial airplane pilot
* A software developer

Here are the 14 researched-backed techniques to
* Learn to code 2x faster
* Don’t forget what you learn
* And Understand hard concepts


## #1 Make your practice as close as possible to the goal
If you are getting prepared for a white-board style interview, you should try and simulate the real interview conditions as closely as possible:
* Use a white-board(duh) or pen and paper to solve the problems
* Set a 45min timer (or whatever time they usually give at interviews)
* Describe your reasoning as you code (as if talking to the interviewer)
The closer your practice resembles the real thing, the more prepared you’ll be. 

## #2 Passive learning doesn’t work
In coding (as in most other things) passive learning has little effect. 

You have to code things out to learn.
Just read about the merge sort algorithm? Now get your PC and write it out.

Watched a tutorial on how to build a menu navbar? Now it’s time to try it out for yourself.

1 hour of active learning = 10 hours of passive learning (maybe more)

## #3 Practice with purpose
You should set specific goals for your coding practice and focus on areas that need improvement. 

For example:
Goal
I want to build a chrome plugin using chatGPT and notion APIs that does x.
Steps
Divide the goal into tasks and choose to complete a single task every morning.

## #4 Connect new concepts to things you already know
For example, if you're learning about object-oriented programming, think about how it relates to other programming paradigms you've learned or to things in the real world (e.g. the class is like a factory and the object instance is like one product of that factory).

## #5 Create mental models
Create mental models of coding concepts to better understand them. 

For example, if have are learning about recursion, try to sketch out a diagram to help you understand the flow of the code
Like in [this post](https://dev.to/gustavupp/the-recursion-explanation-i-wish-i-had-read-as-a-self-taught-developer-3g4p)

## #6 Always try to recall from memory 
Say you have just learned a concept or a piece of syntax. Now, try to recall it from memory without looking it up. 

For example, after reading about a for loop, try to write out an example of one from memory.

You don't have to get it right to reap the benefits, you just have to try.

## #7 Space it out
Practice a little regularly rather than a lot once. 

For example, code for 1 hour every day instead of for 7 hours once a week.

## #8 Mix it up 
For example, if you are solving coding problems, don’t solve all array problems, then all graph problems, then all linked list problems. Instead, solve them randomly. 

You’ll have to figure out what type of algorithm and data structure is needed to solve that problem(like in a real code interview, no one is going to tell what the problem is about).

## #9 Reflect on what you have learned
After a coding session, take a few minutes to reflect on what you learned and what you found challenging. Write down any questions or areas you need to work on.

## #10 Tune it up
Regularly check your skills and understanding by testing yourself with quizzes or coding challenges or asking for feedback from others.

## #11 Break it up
Break larger coding tasks into smaller, more manageable pieces. For example, if you're building a website, break it down into specific pages or features.

## #12 Ask for feedback 
These days you can also tell chatGPT to play the role of a grumpy senior dev to check your code.

Try to get feedback on your coding from more experienced developers. Use feedback to improve.

## #13 Rehearse mentally
I used this one a lot during my pilot training(it’s free to fly in your head)

When you are commuting to work for example and don’t have a computer with you, you can for example, mentally go over the steps needed to create a button that toggles a sidebar.

## #14 Rest and recharge
This is as important as the other ones. 
In the beginning, you don’t give a s***, but when you feel the burnout creeping in:

* Take breaks and engage in activities that allow for mental recovery and relaxation. 
* Go for a walk or watch a movie.