How I would learn to code in 2023 (If I could start over)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
5 years ago, when I couldn’t get  a job after graduating college,   I decided to learn coding. 2 years after  writing my first hello world program,   I got into Amazon and last year, I joined Google  as a Software Engineer. Even though I made a good   progress in the last 5 years and I am grateful  to be where I am today, there’s a part of me   that still wonders if I could have done better.  You see, I spent countless hours watching youtube   videos trying to figure out the best method to learn  programming in a way that not only gets me a job,   but also sets me up for a great career as a  Software Engineer. I could not find a single   comprehensive video that explained how to  learn coding from scratch step by step. So,   I had to try out many different things that people  were recommending on Youtube. As a result, I   started learning Python, Java, Javascript, React,  Redux all at once. After learning all this, when I   looked behind to check where I had reached, I was  in the exact same spot where I started: I was Jobless.   It took me many many months to climb out of that  darkness. If only there was a video which gave me   all the steps I need to take to learn programming  in a practical way, I would not only be in the   exact same place as today in much less time,  I might have also become a better programmer.   What you’re watching right now is the video I  wish I had when I started learning programming. Before I get into the 4 step process and give  you all the free resources I would use to learn   programming, let’s discuss what I would pick  for my programming language. I want to talk about   3 popular options here. First and one of the most  popular options is Javascript. Though Javascript   is used in the backend with the help of Node,  most of its demand still comes from the   front end. So, I am going to assume that if I were  to pick Javascript as my first language, I want to   do front end development. If you don’t already  know, HTML, CSS and JavaScript are the basic   building blocks of front end development. But,  these 3 are not enough to become an employable   Software Engineer. You need to learn some more  libraries or frameworks on top of these to be on   par with the industry. Some example frameworks for  CSS that I learnt are Bootstrap and Tailwind but   there are many other options. For Javascript, you  will need to learn React, Angular or Vue to land a   job. There are some other advanced technologies  like Redux and NextJS that might be needed in   some cases. As you might have already guessed,  this path is long and hard for beginners. That’s   why I would not pick Javascript if I was just  starting out. Next popular option is learning   Python which most people recommend. Python has  many applications in backend, automation and   data science. Why most people recommend Python  is because it’s one of the easiest language to learn.   Syntax of python is very simple and easy to pick.  Python will also give you an advantage in coding   interviews because it requires less lines of  code for the same amount of code. Due to all these   advantages, I had recommended Python in my video  on Fastest way to learn coding and get a job. But,   this video is not about taking shortcuts. What we need to understand is that all this   ease of learning comes at the cost of  performance. I don’t want to get into   too many details here but Python is slower than  other programming languages like Java or C++.   That’s because it’s dynamically typed and it’s an  interpreted language. If you don't know what that   is, that’s fine, don’t worry about it. Just know  that Python is slower. Another issue with Python   is that it has limited support for concurrency.  For these reasons, Python is rarely used to   build complex backend systems. If I look at my own  experience, most of Amazon's backend is written in   Java and most of Google’s is in C++. And I have so  many friends who work on the backends of companies   like Microsoft, Uber and Facebook and they don’t  use Python in their services at all. Since my goal   from day 1 was to become a good Software Engineer  along with getting a job, I would actually pick   the third option which is Java. Along with the performance benefits I just mentioned,   Java has some other advantages for beginners.  Java is a mature language and there’re a ton of   resources to learn Java. Because it’s a compiled  language, errors in Java can be caught at the compile time   and are very descriptive. Since Java has been  around for so long, you can find solutions to   most errors on Stack Overflow which makes it very  easy to debug. And did I mention the amazing   documentation Oracle provides for Java. We’ll see  how to use this documentation in a moment when I cover   how I would learn Java. But, I have  still not told you the best part about learning   Java. And that is: Once you’ve learnt Java, you  can pick up any other language very easily. For me,   I started with learning Java. When I felt I needed  Python to speed up my interview performance,   I picked it up in a couple of weeks. When  I wanted to learn web development using   Javascript based React, that didn’t take me a  long time either. And as I switched jobs,   I had to program in C++, Golang and some  other languages and I never had any problems. Now that we have that out of the way, let’s talk about Step 1, which is: Learn Java. If you have watched any   of my previous videos before, you know that I  am a strong believer in learning by doing. So,   instead of falling asleep while  watching a long Java tutorial,   I would actually get to work and start coding.  Let me show you some resources that I would use.   The best free resource to learn Java interactively  is this aptly named course called “Learn Java” on   Codeacademy. On top of covering basic concepts  like variables, if else statements and loops,   this course also teaches slightly advanced  concepts like Object Oriented Programming,   Encapsulation and Inheritance. I would pay special  attention to these advanced concepts because these   are the fundamentals of Software Development. Each  chapter comes with a free “Lesson” portion and   paid “Quiz” and “Project”. I would focus on the free lesson part for now. Each lesson introduces you to   a new concept, and guides you through an exercise  at the end. It also provides you a way to write   and run all the code within the browser. If you’re  stuck, you can also get a hint. Here are 2 things   I would not do while using Codecademy. Number one,  I would not copy paste the code. When you write   the code yourself, you get used to the syntax.  Number two, I would not use the hint before trying   to solve the problem myself. Another advantage of  learning programming this way is that if I make   a mistake, I’ll have to debug the error myself. I can  always google the error and look for the solution   on websites like Stack Overflow. I can also try to debug the error using the Java   documentation. For example, in this error, I can  see that the printline function doesn’t exist. So,   I can go to the documentation and figure out what  functions are actually available to me. If I could   spend some money, I would do this course called “Learn  Java from scratch” on Educative. This course is   very comprehensive and also gives you challenges  and quizzes at the end of every chapter. Now that I have learnt Java, I’ll move  onto the next step, which is Step number 2:   Build Guided Projects. In this step, I will follow  along with instructors as they build some cool   projects in Java. There are many options that I  can choose from but here are a few examples. For   my first project, I would follow this tutorial  from freecodecamp where the instructor builds   Sudoku from scratch. There are many things that I  won’t understand in this tutorial at first but I   would google everything and use Java documentation  to understand as much as I can. Once I am done   with the first project, I would move onto a  slightly advanced project. For my second project,   I would build a snake game that I used to play  on my dad’s Nokia 3315 back in the day. For that,   I would follow this fun tutorial from “bro  code”. Even though bro explains everything very   well but if I still don’t understand something,  I know that Java documentation is my friend. After following these tutorials, let’s move onto  step 3, which is, Build your own projects. To do  that, I would start with a small idea and keep  expanding on it to build a bigger and better   project. Let me give you an example to show  you what I mean by that. In the first 2 steps,   I would have already learnt the basics of Java.  But, the elusive concepts like Polymorphism and   Inheritance are very easy to forget. So, I  would build a program that helps me remember   the concepts that I have already learnt. This  program gives me a random question to answer from   a pre-stored list of questions. To make it more  interesting, I can make these questions multiple   choice and give the program ability to tell if  I chose the right option. I can also make this   program send a question every day to my inbox to  keep me on track with my learning. If I am looking   for some more adventure, I can move this program  to a server rather than using my own computer.   I will call this program from my computer and  it will send back the question and the answer   options to me. By the way, this program would now be called  an API. Instead of storing these questions in   an array or something similar, I would store them  in a database on the server. If I want to take it   to the next level, I can use the Java that I have  already learnt to make an Android app that calls   my API, shows the question and lets me select my answer on the app. There's no end to it, I hope you got the point. After building my own projects,  I would move onto the step 4,   which is, Learning Data Structures and Algorithms.  When I was learning Java and building projects,   I would have come across many data structures  like Array, ArrayLists and Maps etc. As a   Software Engineer, it’s very important to know  when exactly to use these data structures. You   also need to know some algorithms that can help  you do certain tasks efficiently. For example,   if you wanted to find the shortest path  between point a and point b on the map,   like Google maps does, how would you do it? To  learn Data Structures and Algorithms, I would   go to Coursera and look up this course called  Algorithms by Princeton University. This course   is taught in Java and comes in 2 parts. First part  covers data structures like stacks, queues and   algorithms like MergeSort and Union Find. Second  part covers advanced concepts like graphs, tries,   shortest path etc. I would implement some of  these data structures and algorithms by myself   to further solidify my knowledge and improve  my Java skills. This course also forms the basis of   most tech interviews that I will have to go through to get a job.  So, I would pay special attention to this course.   I would also use resources like Geeksforgeeks  and Leetcode to improve my interviewing skills. If you think that this entire path  is too long and you are looking for   a shortcut to learn programming and get  a job, you can watch this video at the   top. I will see you in the next one.
Info
Channel: Sahil & Sarra
Views: 744,453
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 interview, programming
Id: WI9uRIzLz1s
Channel Id: undefined
Length: 8min 53sec (533 seconds)
Published: Sat May 07 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.