Most people make this mistake while trying to learn a new programming language. This mistake is what makes the learning process inefficient and delays them from becoming competent in the language.
This mistake is trying to learn the language by following step-by-step tutorials before trying to use the language in any real project.
I used to make this mistake too until I realized that there are much better ways.
And no, I’m not saying that online tutorials are bad. They still have their role. More on that later.
Why tutorials are ineffective
When we are going through online tutorials, we are trying to memorize the information. However, humans are incredibly bad at memorizing things (with the exception of very few of us who have a photographic memory).
The problem with online tutorials is that they only consist of information. Even when they have some follow-along steps, those are typically simple to implement so there is hardly any immersion. There is rarely any real problem for a learner to solve either. The learners have to rely almost exclusively on memorizing things. Most learners forget the information almost as soon as they exit the tutorial.
What most people do is try to learn the language before trying to apply it and this is why tutorials seem to be the best starting point. However, as counterintuitive as it sounds, it's better if we do things the other way around. That is, to learn the language, we should try to apply it first and learn it second.
Practice should come first
What I learned over the years is that the best starting point for learning a new programming language is to start with a goal in place for what you want to do with the language. We may want to build an application (you can check this repo for some ideas). Or you just want to solve a programming challenge.
Either of these goals would be suitable. And that is if we don’t have a real project at work where we need to use the programming language we are trying to learn. In this case, things will be even easier.
Then you try to actually achieve this goal. If you are completely new to the language, you will probably discover that there is not much you can do because you don't know how to do anything yet. And this is where a tutorial comes in.
You enter the tutorial. You go through as many lessons as you need to unblock yourself. Once you reach this point, you go back to your original project and immediately try to apply what you learned.
At some point, you will be blocked again. This is when you can come back to the tutorial. You can repeat this process until your project is completed. It doesn't matter as much if you manage to complete the tutorial in the process.
Why this methodology works
Remember what I said about humans being bad at remembering information? However, there is a thing that humans are good at remembering. And that is their personal experience and what they themselves have figured out.
When we are trying to build a project, we aren't merely memorizing the information. We aren't just following step-by-step instructions either. We are trying to figure out how to apply generic knowledge to a specific problem.
We aren't just reading from a website and trying to memorize the information. We are building the actual experience. Because we have to figure things out for ourselves, we don't just remember superficial information. We are learning the fundamental principles behind the information.
This is why, by practicing this way, we remember things much better and retain the knowledge for much longer.
Best of both worlds
There is an online resource that implements this principle quite well. It's a website called Educative. And although I created some courses for them, I am not getting paid to advertise it. I am highlighting it because I genuinely believe that it's a good resource.
This website consists of online tutorials. However, they are fully interactive and they are structured in such a way that the learners are encouraged to practice.
Typically, a couple of bite-size lessons would explain a concept. Then, the learner would be asked to solve a challenge by applying the newly learned concepts. There is a minimal amount of hand-holding, although hints are available if you get stuck.
The subscription is very cheap too so you may want to check it out.
Wrapping up
Even if we try to put the practice first, we still can't progress far without knowing the theory. Tutorials are still the best way to learn the theory. They tend to be much easier to understand than the documentation of the language.
As you get more senior, you will probably have to read the language documentation to understand it in more depth to enable yourself to solve more challenging problems. But while you are learning a new language as a beginner, tutorials would be more than sufficient.
Just don't jump into tutorials right away without having a problem to solve. Without practice, you will waste a lot of time as you will probably not retain most information if you do a tutorial on its own.
Then, having realized that you still can't use the language even once the tutorial is complete, you may feel like starting another tutorial. This is what many people do and there is a very fitting term for it:
“Tutorial Hell”
So get out of the tutorial hell and just start practicing.
P.S. If you want to get more insights about software development, you can subscribe to the newsletter by clicking this button: