How to learn a new language quickly
Learning a new language is a mandatory step as a developer. But why is it so important? And more importantly, what’s the best way to do it quickly?
Today’s article is not for you if you are learning your very first language. But if you do, you can stay! It’s always interesting to know what awaits you in the future. The only prerequisite to apply what I’m about to tell you is that you already know a language. And once you know it, it’s important that you try something else.
I’ve got some content centered on this coming soon so I won’t go into too much detail, but hyper-specialization as a developer is a vicious trap. It’s super attractive. The more you specialize in a language (or worse, just a framework) the better you’re going to get at it. You’ll then be able to call yourself “EXPERT”, inflate your ego and if you’re smart, your salary with it.
The problem? The longer and more firmly you lock yourself in your home, the harder it is to get out. The world of development is gigantic and constantly changing. The day you finally walk out, you can’t even walk! Everyone around you speaks Chinese and does magic. You get stuck with your expertise and at the same time you limit the positions you can apply for. You don’t want that to happen to you.
In the last four years, at my request, I have changed teams three times in the big group I’m in. I did e-commerce (PHP), then online tools (NodeJS/DevOps) and today I’m working on a video game directly in the 3D engine (C++/Python). Each time, I used the following technique to learn the necessary languages!
Step 1: Organization
The only problem preventing developers from engaging in learning is their organization, not their ability to do so. We need to talk about this before we even start. Without organization, you’re going to give up very quickly.
Organize your time
If your goal is to go fast, then you’ll have to make a little effort. It is important to be very consistent in your learning. This means blocking more or less 2 hours a day, if possible every day, otherwise at least 3/4 days a week.
You’re going to tell me you don’t have the time and I think that’s not true. You just need to prioritize what you do. The most effective way to learn something quickly is to come back to it very often. The hammering every day is a great way to get information in. Especially when you have a lot of unfamiliar things to discover!
If your goal is not to go fast, then you can do things more relaxed. But that doesn’t mean you don’t need regularity. I want you to realize that the most important thing is to come back to the subject regularly. Otherwise you’re going to be like 80% of people who go into this kind of learning.
You’re not going to touch anything for a while and you’re going to forget. So, when you go back on it, you’re going to get bored instantly. If you get bored, you’re going to give up.
Organize your sources
The worst thing you can do about sources is to change them during your learning. That and going from source to source in a chaotic way every day. That’s what pretty much everyone does and it’s also a big source of abandonment.
This is the part where I’m supposed to recommend something like pluralsight, with a promo code with two months free. But I’m not going to do that for two reasons. The first is that pluralsight won’t give me a coupon code. The second one is that the source itself should chosen according to your preferences.
Some people prefer a text format, some prefer a video format, some need the pedagogy of a trainer and some don’t. It’s up to you to decide this. It’s important to choose a primary source and stick to it. Take the time to make the right choice here. You really need to be comfortable with it.
It’s important that you go through a core training that speaks about everything in the language. That’s going to be your main thread and you want it to be solid. You can scatter later on with different sources. For the first contact, you need to focus on one source.
Now that you’ve firmly blocked time and your learning source is also sealed, you can begin.
Stage 2: Learning
Now, there is a big problem that is common to all trainings. It doesn’t matter if it’s written or a video. During the whole time of the training, you are passive. When you are passive, you learn, but you retain almost nothing. You need a minimum of theoretical knowledge (passive) to be effective in the practical phases (active). So how do you make these passive phases more active and therefore more impactful?
What I do every time is to practice active listening during the training. Very concretely, I open a google doc and I write in it everything that I think is important to remember or the particularities of the language. Take quick notes, incisive to the limit of bullet-points. I do this throughout each listening session. For example, here is an example of a small note taken while I was learning Python.
#Value equality is not identity quality x = [1, 2, 3] y = [1, 2, 3] if (x == y): print('Variable are equal by value') if (x is not y): print('Variable are not equal by identity')
It’s the kind of stuff that can give you crazy bugs and is peculiar to Python by the “is” and “==” syntax. A mechanism that you can quickly forget. The fact that I took this note printed this information in my brain.
I know that many people are lazy to make an extra effort during a listening session. I understand that it adds to the workload and that it is not pleasant. But believe me, it’s incredibly effective. It will be DECISIVE during and after your training.
One of the worst things you can do during your training is to start a huge project right away. We’ll see how to do it after this project, but during the learning phase, it’s not the right time. We’re going to focus first on very small, very quick exercises to do in each session.
Every time you see a part and/or a topic, it’s important to practice it by coding. The brain doesn’t print anything if you don’t do it for real. And you don’t need to invest 10 hours of your time in a huge project every day to have this practice. You have to do it gradually!
You can very simply find very small exercises, like Katas, to do that. Or you can better reimplement what you’re going to see during your training by changing things. Not many people take the time to do this little practice during training. But it’s what will work the best.
And with all this, you have the learning flow that you have to repeat every session.
For each session, the order is as follows:
- 1 : Read your active note-taking document
Reading your active note-taking document over and over again will have a hammer effect. With each proofreading, the concepts and peculiarities of the language will become more and more obvious. You’ll never waste time going back to things you’ve already seen.
- 2 : Active listening by adding notes to your document
Each session, we open the google doc and add notes during the training for the next session. Writing in addition to listening during the session will make you get things in faster.
- 3 : Practice session concept implementations
To learn and understand a language requires practice. It is mandatory and it must be done as soon as possible. But not just any way. We start with simple and quick exercises.
Once your main training is over, you have to move on to consolidating your knowledge. And to do that, we’re going to do a project. The choice of the project will be important.
Step 3 : Consolidation
As in most cases, when you want to grow as a developer, the solution is to go through a personal project. You learn a lot, you do what you like and it’s fun!
But in the case of learning a new language, there is a trick that will optimize this step in an incredible way. The best personal project to learn a new language is one that you have already done.
And the reason is simple and very logical.
When you develop an application with a language you already know, you don’t wonder how to use the language. You just think about what to do inside your application.
When you develop an application with a language you don’t know, you do two things at once. You’re wondering how to use the language and at the same time you’re wondering what to do in your application.
I promised you that your learning of the new language would be quick. I promise you that if you go on a new project to learn a new language, it will take longer.
What you need to do is focus on a project you have done in the past. That way you will only focus on the how and not the what. And this simple trick will change everything. You’ve just saved yourself a lot of time in your learning process.
For example, I always do the same CRUD API that could be used as a backend for Instagram. An API that allows you to post images with a title and a description on AWS S3.
It’s complete, it makes me see a lot of problems, and above all I don’t ask myself what I should do. I know what I have to do, now I have to understand how to use the language.
The secret ingredient for any optimized learning is always the same: regularity. I could give you all the best tips in the world, if you don’t apply them regularly, it won’t work.