In this video I will tell you how to learn new programming languages fast based on my 10 years of experience and quite a lot of languages that I learn.
So the first question is what does it mean to "learn" a new language? Is it just to understand it's main pros and cons? Or build a hello world application? Or when you get production experience in some company?
Normally people are thinking that they "learned a new language" when they can build some stuff in it. Like you know typescript if I created medium size application using it.
The first and the most important step is to understand your goal in learning new language. Because without goal you don't know where you want to get.
Here are the most popular goals that I see:
- New language is better paid
- You want to learn some language with will improve your programming skills and the way of writing code (for example some functional languages)
- You want to try something new like backend or mobile development
If you see other important goals please write me don't in the comments below.
The next step is also crucial but I don't see that a lot of people are doing it. You need to get a WOW effect. You need to find something that is done in the language that you want to learn to get that WOW effect that will help you in learning. For example your favorite game is build with that language, or you saw the code what was so short and efficient that you want to learn it now. At least you need to remember your goal and even if learning a language is not that fun you are doing it with purpose. All this will help you with continuing learning even if it sometimes boring.
The next step is too choose the source of knowledge: the main sources are a book, a video course that maybe you want to buy or youtube series or digging through documentation and different repositories in github by yourself. And actually any source can be good but of course there are pitfalls everywhere.
Let's start with the book. I personally don't like programming books. First of all they are often outdated which means you are getting bugs or problems that just shouldn't bother you while learning and secondly you can't easily copy paste a part of code or download the attached source code and try it if you can't find a mistake in your code.
All this you can do if we are talking about videos as a source of knowledge. In good video tutorials you always get attached code under each lesson and you can test it. Also when you see person showing you something you see where he clicks and it's not possible with the book.
I always prefer video tutorials over books if possible. But again if we are talking about free tutorials or guides they are of course free for the reason. Sometimes they are lacking information or not up to date and in paid courses you normally can ask something in the comments and get answers from the author. I'm not of course saying that you need to go and buy the most expensive course that you can find but just keep that in mind. Also the are lots of long courses like 10-20 hours of knowledge in 1 course or even video. I don't recommend such content at the beginning at all. Just be realistic here how much will you learn while watching 20 hours series if you don't have any experience in new language?
It's much better to find some course of videos which is fully focused on beginners knowledge and step by step teach you stuff. Of course it's better when videos are in small chunks like 10-20 minutes and it's really important real examples or small application. In this way it will be smooth and effortless. Also you will get a lot of additional clarification why something used and what are the benefits.
So after learning some basics it's time to build something by yourself. Videos and tutorials are good and useful but until you won't write it yourself and get all bugs you can't say that you learned new language.
I always recommend to start with something small like own blog, todo list, small website or a small game. No facebooks clone as a first project. You will just lose your passion of learning because it will be too much to do. So you just sit there try you do your project and simply google every problem or error that you have. Normally all this problems and errors are basic and people asked them lots of times.
Additionally to this I recommend you to go briefly through all official documentation just to see what features are there at all and how much you need to learn. I also mentioned digging through github repositories. You need for sure to have good programming skills in order to be able to grasp things in the new language in fully finished project on github. It's really time consuming and not smooth path at all but you see the real code (sometimes not the best).
After some time of doing stuff on your own you might see that you are lacking advanced knowledge in the language. It's a good time to find some advanced course or tutorial which is more focused on deep features of language of framework. Of course as always it should have good real examples.
So now here is my process of learning new language. Actually all this can be applied not only to the language but to frameworks or paradigms.
4 years ago I decided to learn Angular.
- Set a goal: I needed to learn Angular because company decided to migrate projects from AngularJS to Angular and deep Angular knowledge could give lots of benefits
- Find a Wow effect: I really liked all stuff that new Angular gives like Typing out of the box and rerendering with virtual DOM
- Finding tutorial: Official documentation was super bad but there where plenty tutorials for beginners on youtube
- After several days of watching tutorials I decided that I need to create a real project. It was actually a ecommerce shop. I started with small features and then implemented more and more stuff
- At some point I understood that I don't have enough knowledge of things that are possible in Angular a bought 20 hours Angular course. But it doesn't of course mean that I watched the whole course. I skipped all videos about stuff that I already new and just checked the missing parts of knowledge
As you can see that learning a new language or framework is not that difficult if you have a plan and a goal. Also I would say it is super crucial to build some project completely on your own because only then you can say that you learned some programming language.
Also don't forget to check my full courses regarding different web technologies.