With more and more new technologies and programming languages, The most essential skill for any developer is by far the ability to learn and adapt fast. I am going to give you some easy strategies to learn anything faster and more effectively. These strategies helped learn all the technologies, languages, and frameworks I use nowadays, and it also helped me get an internship at Amazon as a software developer.
I consider myself a self-taught developer. I have a traditional software engineering degree, however, most of the technologies I have learned was on my own. Throughout the years, I saw what methodologies work better, and which one failed. I saw how to learn things faster and in a way that the information will retain in my brain, so when I have to do the same thing after one month, I will have at least an idea of how I should do it.
I remember one particular case, Using these strategies, I have prepared for the 3 AWS certification exams, in less than one month, and I passed all 3 of them on the same day.
The wrong way of learning
So, the problem is that For many beginners, learning typically involves watching youtube tutorials, following courses while taking some notes, and, for some, reading some theory books. While all these strategies can be helpful to get to know the technology you want to learn, they are very ineffective when it comes to retaining the information long term. Now you watch a video about managing global state with Redux, and you think "Yeah, Yeah, I've got it, seems logical", and after a week you forget everything, and either get demotivated and think that it's too hard for you or in the best-case scenario, you start another tutorial or course.
The solution: Project-based Learning
In order to learn faster, and to retain the information long term, you gotta roll up your sleeves, and get your hands dirty with the technology you are learning. This hands-down experience is crucial for you learning journey, in every phase of your process.
Phase 1: Follow along with the tutorials
In the beginning, When you just get started, you will of course watch tutorials or some courses, But the important thing is to follow along. Do the same thing as the tutor is doing. The first time, it can be just copying step by step what he is doing. When you finish a part, bonus cookies to you if you try again to do the same things, but this time from memory. This will make sure that you actually understood the concept that was explained. Of course, you can refer back to the video, or the solution if you are stuck, but try to do as much as possible yourself. Extra bonus cookies to you if you then start experimenting with what you just learned. Try to modify the solution you already have, and check your assumptions about how it works. Ask yourself a lot of questions, and try to answer them by experimenting with them out. For example, if the tutorial taught you how to sort an array ascending, ask yourself but how would you sort it descending, and try things out until you succeed and get to the "Aha" moment. During the Aha moment, your brain connects the dots, and now it can remember.
I would highly recommend you not to spend a lot of time on this step. One course is enough to grasp the fundamentals of the technology. In this step of your learning journey, your goal is NOT to master the technology, but rather just to get to know the basic concepts of it, so it will be easier for you to google later. Move to the next phase a little bit earlier than you feel you are ready.
Phase 2: Build actual projects
During the second phase of your learning journey you will take everything you learned during the tutorial or course, and you will use it to create actual projects. Building a real project is very powerful for a couple of reasons. You will build a freaking application, website, game, or whatever you are learning and you can show it to your friends and family. This will motivate you because you will see something tangible that you can build, and you will understand how powerful the technology is. Also, when you are building a real project, you will get into a lot of problems, but hey, don't be afraid of them, because they will help you learn. You will soon understand that the tutorial that you watched in the previous part was just the surface of what you need in a real project and a lot of the things you need, you will have to google yourself. The good news is that most of the time, the problem that you've got into, is not something new, and a lot of people already had it, solved it, and shared it on the internet. You just gotta be good at googling. That's what we, developers, do best.
Why should you learn a new technology
With project-based learning, you want to use a technology in order to solve problems, not just for the sake of learning it because it's a cool thing to do. Use it as a tool, not as a destination. For example, the reason to learn react native should not be to get into hybrid mobile development, or because that's cool and your friend John knows it, but rather to accomplish a dream of yours, for example of saving the penguins and you think that the best way to accomplish that would be using a mobile application. When the project you are building or the problem you are solving has a purpose behind it, then you don't even feel the burden and it's going to be much more fulfilling learning it and you will have fun in the process. This will keep you building more projects and learning even more technologies in the future, and eventually become a successful developer.
Choose the right project to build and learn
One trap that many people fell into when using project-based learning, is choosing the difficulty of the project. I see too many times people that have been coding for 1 month that want to build the next Facebook. It's very good to be ambitious, but in this situation, you are setting yourself for a big disappointment. Choose the next project to be just a bit more difficult than your current abilities. Integrate one new library, a new framework, a new best practice or architecture. This will make sure that you stay in the Flow zone, because the project is just enough challenging to keep you excited, but not too difficult to give you anxiety. If you start a project which is much harder than your current abilities, then it will give you anxiety and you will stop doing it. Also, if you start a project which is much easier than your current level, you will get bored and stop working on it as well. You have to find the perfect balance for the complexity of the project that will keep you motivated to learn. This will lead to constant growth, and eventually, you will become unstoppable.
That's it for today guys. Start building and stay consistent with it and eventually you will master the technology that you are learning. Never stop learning, because our industry is moving so fast, and if we stop learning, we are going to be irrelevant in the next 5 years.
If you are looking for project-based tutorials, join me LIVE every Friday where we are building Fullstack Clones of applications that you use every day, like Instagram, Twitter, Whatsapp, Tiktok, Spotify, and more.