How I Hacked My Mind To Learn Coding

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
As an unemployed 25 year old university graduate, when I decided to learn coding for a career change, I had no clue it was going to be so hard. I was spending countless hours in front of my laptop trying to learn programming. But, no matter how hard I worked, I was not able to remember anything that I learnt. And whenever I tried to build something on my own, I would fail every single time. That’s when I turned towards the time tested learning techniques that are backed by scientific evidence. After a little bit of tweaking, I was able to apply these methods for learning coding. As a result, not only did I manage to learn programming, I also succeeded in getting job offers from companies like Amazon and Facebook. All of this was possible because I managed to find ways to hack my mind to remember everything that I was learning. Many of my methods might seem counterintuitive at first but hear me out because they might prove to be a game changer for your coding journey. If you stick with me until the end, I’ll also share a technique that single handedly doubled my learning speed. First method that proved vital to learn coding was repetition. If English is not your first language, you would know that you can’t remember the meaning of a new word just by encountering it once. More often than not, you come across a word 2 or 3 times before you actually remember it forever. The same is true for coding and there’s a reason for this. It’s well known in the scientific community that repetition causes strong chemical interactions at places where the neurons in our brain connect with each other and this helps with learning. So, how can we use this information to learn programming efficiently? Should we keep doing the same tutorials again and again? The answer is “No”. That’s because coding is more complex than just memorizing through repetition. For coding, you need what I call “Repetition by Application”. What this means in practice is that instead of doing the same lessons again and again, we apply what we learnt to a real world problem. In the process, we repeat what we just learnt and this helps with retaining the concepts for a long period of time. So, how did I achieve this? When I was a complete beginner and I had just learnt my first programming language which was Java, I would follow along with someone as they built something fun in Java and this helped me repeat and apply what I had just learnt. As my programming skills improved, I would come up with my own projects and build them from scratch. Doing this over and over again helped internalize complex ideas like inheritance, polymorphism and encapsulation in Java. “Repetition by Application” along with the last method that I will discuss today were the 2 biggest reasons why I was able to learn programming. So, do give it a try. When I first started out, I would spend at least 5-6 hours learning programming every day. The second thing I did to improve my learning was to study less. I know how absurd it sounds but there’s scientific evidence to back it. You see, in today's day and age, when we have all the content available on demand and Netflix has already primed us to binge watch stuff, we tend to think that we can learn programming fast by binging tutorials on Youtube or Udemy. At least, that’s what I thought when I was spending all that time learning coding. But, in reality, doing short focused sessions over a longer period of time is a much better way to retain what you have learnt. In scientific literature, this is called “Spaced Learning”. “Spaced Learning” is what universities try to achieve by having only 2 or 3 short sessions per week for every subject. To drive the point home, I want you to remember all the 8-10 hour cramming sessions you have done just before an exam. How much of what you learnt during those sessions did you really remember a couple of months after the exam? If your answer to the question is the same as mine, which is “Nothing" or "Not much”, then you would benefit from studying less. In my case, I switched to doing a 2 hour coding session every morning and that completely changed the trajectory of my programming journey. But when I switched to using smaller sessions, I quickly realized that 2 hours passed really fast if I was not thoughtful about what I wanted to achieve in those hours. That’s when I came across Parkinson’s law. Parkinson’s law states that your work will expand to fill the time you allot for it. That’s because when you have more time to complete something, you reduce your effort and fill the entire time with the task at hand. So, to make the most out of my two hour session, I started focusing on efficient time boxing of my tasks. For example, If I was learning a particular chapter in the morning, I would have a quick look at the lesson the night before. I would assess the difficulty level of the lesson and set a clear target for how much I want to accomplish in my 2 hour session next morning. By doing this, not only did I start making faster progress, I also felt more motivated because I had a sense of purpose now. On most days, I would just finish the tasks I had set for myself. On some days however, I would finish all my tasks before the end of 2 hours. On those days, I had to decide whether I want to fill the rest of my time with more tasks or I want to call it a day. I decided not to add any new tasks on my plate on the day. I took inspiration from the race to the South pole that took place between British and Norwegian teams. The British team chose the brute force approach to cover as much distance as possible whereas the Norwegian team was more measured in their approach and didn’t go beyond the set target for the day. In the end, the entire British team died because they pushed themselves too hard. I know that learning coding is not as difficult as making the arduous journey to the South Pole but this story had a profound impact on me and I wanted to be more calculated in my approach. Another technique that completely transformed my learning experience was giving up watching video tutorials to learn new tech skills. I have already covered in my other videos how watching others code doesn’t take you very far in terms of learning programming. Watching tutorials is ok for advanced concepts but for the basics, one should focus on doing actual coding. Coding to learn programming is similar to taking notes in the class. When you code it up yourself, you are more focused and better understand the main concepts. You also break things and end up fixing them yourself which is an essential part of a Software Engineer’s job. So, if you want to learn Python, instead of sitting through a long, uninspired tutorial, you can go to learnpython.org and write some code. For Java, you can do this course by Codeacademy. And for Javascript, you can learn it at W3 schools. All these resources provide you an interactive playground where you can play with the code and also do some exercises on your own. I don’t even remember how many times I have revisited a concept that I learnt months ago and had that “Wow!” moment where I said “Oh! That’s what it meant”. That’s because many times, my understanding was incomplete or simply wrong. To limit the number of such instances, I looked at the way universities teach programming to the students. In a university, the professor is not the only person who helps you learn new skills. Discussions that you have with your classmates are equally important. That’s because when you combine the incomplete understanding of multiple people, you can still actually have the complete picture. According to me, this is the biggest disadvantage self taught programmers have. To eliminate this issue, many people join some bootcamp and surround themselves with like minded people. But just because you are not doing formal training for coding doesn’t mean you can not emulate this. In my case, I made a small “Code club” with 4 of my friends. The group met weekly to discuss what they learnt in the past week and agree on the targets for the next week. This served 3 purposes. Number one, it helped to fill the knowledge gaps. If one person did not understand something fully, others would chip in to add the missing pieces. Two, it held us accountable towards making progress. If you did not complete your tasks for one week, you would have to catch up fast. Otherwise, you will fall behind the rest of the group. Lastly, if you ever felt demotivated because you couldn’t understand some new concept, the group was always there to support you and help you stay motivated. The “Code club” was very successful and most of the people in the group are now working at some of the best tech companies. And I’m still in touch with all the members of the club. I mean, we don’t discuss the knapsack problem anymore but the drive of collective learning is still there. Last method I used to fastrack my coding journey was to do what I call “Utility based learning”. Let me explain what I mean by that. How many times have you watched a long 10-15 hour tutorial and within a few days of finishing it, you forget everything? This is a well known phenomenon and in the scientific literature, it’s captured in the form of The Ebbinghaus forgetting curve. So, why even learn all these things in the first place when we are going to forget them anyway? To solve this issue, I used “Utility based learning” which means that we learn something new only when we need it. So, how did I really apply this to learning coding? It’s very simple. Whenever learning a new tech skill, I do some hands-on tutorials to learn the basics first. And for the advanced concepts, I just skip them in the beginning. I learn all advanced concepts when I actually need them for my projects. Simply put, “Don’t try to learn everything”. I have been working in the tech industry for about 5 years now and I still don’t know everything about anything. And that’s perfectly fine. Now that you know how to hack your mind to learn coding, all you need is a clear step by step path and free resources to learn programming. Watch this video at the top for that. I’ll see you in the next one.
Info
Channel: Sahil & Sarra
Views: 375,191
Rating: undefined out of 5
Keywords: how to learn coding, how to become a software engineer, how to learn programming, how to learn coding for beginners, how to learn programming for beginners, how to learn coding fast, how to become a software developer, how to get software engineer job, how to get software developer job, how to learn to code, coding, coding advice for beginners, coding advice, learn to code
Id: gX942fdjWek
Channel Id: undefined
Length: 8min 20sec (500 seconds)
Published: Fri Jul 01 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.