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

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


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

Today I will share how I would learn coding step by step if I had to start from ZERO again. This video will answer following questions:
1. How to become a Software Engineer?
2. Which programming language should you learn?
3. How to learn data structures and algorithms?
4. What coding projects should you build?
5. How to crack coding interviews?

Here are all the resources I talked about in this video:
NOTE: We don’t get paid by any of these resources. If you want to support us, SUBSCRIBE to our channel
1. How To Learn Java Free: https://www.codecademy.com/learn/lear
2. How To Learn Java Paid: https://www.educative.io/courses/lear
3. Build Sudoku:    • Build a Java Desktop Application - Fu…  
4. Build Snake game:    • Java snake game 🐍  
5. Algorithms 1: https://www.coursera.org/learn/algori
6. Algorithms 2: https://www.coursera.org/learn/algori

► For more content like this, subscribe to our channel:    / powercouple26  

► Follow us on Linkedin:
https://www.linkedin.com/in/gabag26
https://www.linkedin.com/in/sarrabounouh

► Let’s be FRIENDS! https://www.instagram.com/power_coupl

► For business inquiries, reach us on: [email protected]

#learncoding #programming #softwareengineer #faang

DISCLAIMER: All opinions shared on this channel are our own and don’t express views or opinions of our employers. We only use our experiences and public knowledge to make our content. NO CONFIDENTIAL INFORMATION of our employers is used or shared on this channel. This is not a Professional Coaching channel, it only highlights the public resources that have worked for our careers.


Content

0 -> 5 years ago, when I couldn’t get  a job after graduating college,  
3.36 -> I decided to learn coding. 2 years after  writing my first hello world program,  
7.28 -> I got into Amazon and last year, I joined Google  as a Software Engineer. Even though I made a good  
11.92 -> progress in the last 5 years and I am grateful  to be where I am today, there’s a part of me  
15.68 -> that still wonders if I could have done better.  You see, I spent countless hours watching youtube  
20.16 -> videos trying to figure out the best method to learn  programming in a way that not only gets me a job,  
24.56 -> but also sets me up for a great career as a  Software Engineer. I could not find a single  
28.48 -> comprehensive video that explained how to  learn coding from scratch step by step. So,  
32.32 -> I had to try out many different things that people  were recommending on Youtube. As a result, I  
36.88 -> started learning Python, Java, Javascript, React,  Redux all at once. After learning all this, when I  
42.16 -> looked behind to check where I had reached, I was  in the exact same spot where I started: I was Jobless.  
47.36 -> It took me many many months to climb out of that  darkness. If only there was a video which gave me  
51.84 -> all the steps I need to take to learn programming  in a practical way, I would not only be in the  
55.76 -> exact same place as today in much less time,  I might have also become a better programmer.  
60.08 -> What you’re watching right now is the video I  wish I had when I started learning programming.
64.4 -> Before I get into the 4 step process and give  you all the free resources I would use to learn  
68.56 -> programming, let’s discuss what I would pick  for my programming language. I want to talk about  
72.72 -> 3 popular options here. First and one of the most  popular options is Javascript. Though Javascript  
77.28 -> is used in the backend with the help of Node,  most of its demand still comes from the  
81.36 -> front end. So, I am going to assume that if I were  to pick Javascript as my first language, I want to  
85.84 -> do front end development. If you don’t already  know, HTML, CSS and JavaScript are the basic  
90.72 -> building blocks of front end development. But,  these 3 are not enough to become an employable  
94.64 -> Software Engineer. You need to learn some more  libraries or frameworks on top of these to be on  
99.36 -> par with the industry. Some example frameworks for  CSS that I learnt are Bootstrap and Tailwind but  
104.16 -> there are many other options. For Javascript, you  will need to learn React, Angular or Vue to land a  
108.64 -> job. There are some other advanced technologies  like Redux and NextJS that might be needed in  
113.28 -> some cases. As you might have already guessed,  this path is long and hard for beginners. That’s  
117.84 -> why I would not pick Javascript if I was just  starting out. Next popular option is learning  
121.68 -> Python which most people recommend. Python has  many applications in backend, automation and  
126.08 -> data science. Why most people recommend Python  is because it’s one of the easiest language to learn.  
130.64 -> Syntax of python is very simple and easy to pick.  Python will also give you an advantage in coding  
135.36 -> interviews because it requires less lines of  code for the same amount of code. Due to all these  
139.36 -> advantages, I had recommended Python in my video  on Fastest way to learn coding and get a job. But,  
144.24 -> this video is not about taking shortcuts. What we need to understand is that all this  
148.32 -> ease of learning comes at the cost of  performance. I don’t want to get into  
151.52 -> too many details here but Python is slower than  other programming languages like Java or C++.  
156.8 -> That’s because it’s dynamically typed and it’s an  interpreted language. If you don't know what that  
161.04 -> is, that’s fine, don’t worry about it. Just know  that Python is slower. Another issue with Python  
166.08 -> is that it has limited support for concurrency.  For these reasons, Python is rarely used to  
170.4 -> build complex backend systems. If I look at my own  experience, most of Amazon's backend is written in  
175.6 -> Java and most of Google’s is in C++. And I have so  many friends who work on the backends of companies  
180.88 -> like Microsoft, Uber and Facebook and they don’t  use Python in their services at all. Since my goal  
185.84 -> from day 1 was to become a good Software Engineer  along with getting a job, I would actually pick  
190.16 -> the third option which is Java. Along with the performance benefits I just mentioned,  
194.48 -> Java has some other advantages for beginners.  Java is a mature language and there’re a ton of  
199.2 -> resources to learn Java. Because it’s a compiled  language, errors in Java can be caught at the compile time  
204.48 -> and are very descriptive. Since Java has been  around for so long, you can find solutions to  
209.04 -> most errors on Stack Overflow which makes it very  easy to debug. And did I mention the amazing  
213.92 -> documentation Oracle provides for Java. We’ll see  how to use this documentation in a moment when I cover  
218.56 -> how I would learn Java. But, I have  still not told you the best part about learning  
222.08 -> Java. And that is: Once you’ve learnt Java, you  can pick up any other language very easily. For me,  
227.28 -> I started with learning Java. When I felt I needed  Python to speed up my interview performance,  
231.76 -> I picked it up in a couple of weeks. When  I wanted to learn web development using  
235.28 -> Javascript based React, that didn’t take me a  long time either. And as I switched jobs,  
239.92 -> I had to program in C++, Golang and some  other languages and I never had any problems.
244.88 -> Now that we have that out of the way, let’s talk about Step 1, which is: Learn Java. If you have watched any  
250.16 -> of my previous videos before, you know that I  am a strong believer in learning by doing. So,  
254.16 -> instead of falling asleep while  watching a long Java tutorial,  
257.12 -> I would actually get to work and start coding.  Let me show you some resources that I would use.  
261.44 -> The best free resource to learn Java interactively  is this aptly named course called “Learn Java” on  
266 -> Codeacademy. On top of covering basic concepts  like variables, if else statements and loops,  
271.36 -> this course also teaches slightly advanced  concepts like Object Oriented Programming,  
275.68 -> Encapsulation and Inheritance. I would pay special  attention to these advanced concepts because these  
281.2 -> are the fundamentals of Software Development. Each  chapter comes with a free “Lesson” portion and  
285.6 -> paid “Quiz” and “Project”. I would focus on the free lesson part for now. Each lesson introduces you to  
290.32 -> a new concept, and guides you through an exercise  at the end. It also provides you a way to write  
294.72 -> and run all the code within the browser. If you’re  stuck, you can also get a hint. Here are 2 things  
299.44 -> I would not do while using Codecademy. Number one,  I would not copy paste the code. When you write  
304.32 -> the code yourself, you get used to the syntax.  Number two, I would not use the hint before trying  
309.36 -> to solve the problem myself. Another advantage of  learning programming this way is that if I make  
313.44 -> a mistake, I’ll have to debug the error myself. I can  always google the error and look for the solution  
318.08 -> on websites like Stack Overflow. I can also try to debug the error using the Java  
321.92 -> documentation. For example, in this error, I can  see that the printline function doesn’t exist. So,  
327.2 -> I can go to the documentation and figure out what  functions are actually available to me. If I could  
331.84 -> spend some money, I would do this course called “Learn  Java from scratch” on Educative. This course is  
336.64 -> very comprehensive and also gives you challenges  and quizzes at the end of every chapter.
340.56 -> Now that I have learnt Java, I’ll move  onto the next step, which is Step number 2:  
345.12 -> Build Guided Projects. In this step, I will follow  along with instructors as they build some cool  
349.84 -> projects in Java. There are many options that I  can choose from but here are a few examples. For  
354.64 -> my first project, I would follow this tutorial  from freecodecamp where the instructor builds  
359.04 -> Sudoku from scratch. There are many things that I  won’t understand in this tutorial at first but I  
363.76 -> would google everything and use Java documentation  to understand as much as I can. Once I am done  
368.4 -> with the first project, I would move onto a  slightly advanced project. For my second project,  
372.88 -> I would build a snake game that I used to play  on my dad’s Nokia 3315 back in the day. For that,  
378.16 -> I would follow this fun tutorial from “bro  code”. Even though bro explains everything very  
382.16 -> well but if I still don’t understand something,  I know that Java documentation is my friend.
386.96 -> After following these tutorials, let’s move onto  step 3, which is, Build your own projects. To do 
392.32 -> that, I would start with a small idea and keep  expanding on it to build a bigger and better  
396.48 -> project. Let me give you an example to show  you what I mean by that. In the first 2 steps,  
400.88 -> I would have already learnt the basics of Java.  But, the elusive concepts like Polymorphism and  
405.04 -> Inheritance are very easy to forget. So, I  would build a program that helps me remember  
408.88 -> the concepts that I have already learnt. This  program gives me a random question to answer from  
413.12 -> a pre-stored list of questions. To make it more  interesting, I can make these questions multiple  
417.84 -> choice and give the program ability to tell if  I chose the right option. I can also make this  
422.32 -> program send a question every day to my inbox to  keep me on track with my learning. If I am looking  
426.72 -> for some more adventure, I can move this program  to a server rather than using my own computer.  
431.36 -> I will call this program from my computer and  it will send back the question and the answer  
435.28 -> options to me. By the way, this program would now be called  an API. Instead of storing these questions in  
440.24 -> an array or something similar, I would store them  in a database on the server. If I want to take it  
444.64 -> to the next level, I can use the Java that I have  already learnt to make an Android app that calls  
449.44 -> 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.
455.84 -> After building my own projects,  I would move onto the step 4,  
459.12 -> which is, Learning Data Structures and Algorithms.  When I was learning Java and building projects,  
463.6 -> I would have come across many data structures  like Array, ArrayLists and Maps etc. As a  
468.32 -> Software Engineer, it’s very important to know  when exactly to use these data structures. You  
472.72 -> also need to know some algorithms that can help  you do certain tasks efficiently. For example,  
477.04 -> if you wanted to find the shortest path  between point a and point b on the map,  
480.88 -> like Google maps does, how would you do it? To  learn Data Structures and Algorithms, I would  
485.6 -> go to Coursera and look up this course called  Algorithms by Princeton University. This course  
489.92 -> is taught in Java and comes in 2 parts. First part  covers data structures like stacks, queues and  
494.88 -> algorithms like MergeSort and Union Find. Second  part covers advanced concepts like graphs, tries,  
500.4 -> shortest path etc. I would implement some of  these data structures and algorithms by myself  
505.04 -> to further solidify my knowledge and improve  my Java skills. This course also forms the basis of  
509.76 -> most tech interviews that I will have to go through to get a job.  So, I would pay special attention to this course.  
514.72 -> I would also use resources like Geeksforgeeks  and Leetcode to improve my interviewing skills.
519.44 -> If you think that this entire path  is too long and you are looking for  
522.32 -> a shortcut to learn programming and get  a job, you can watch this video at the  
525.52 -> top. I will see you in the next one.

Source: https://www.youtube.com/watch?v=WI9uRIzLz1s