To learn coding, you need to pick a programming language first. Let’s start with that. We have many options here but I will talk about the 3 most popular ones. If you want to pick the easiest option as a beginner, I recommend picking the first option which is Python. That’s because Python is very similar to writing in English. For example, if you have a list of numbers. And for each number in the list, you want to print it on the screen. Well, it’s already done. Let’s say you pick Python. Now, you need a step by step roadmap to learn Python. More than 4 million programmers already know that the best path to learn Python and actually get a job is this video that I made a few months ago. In this video, I showed all the different free resources new programmers can use to learn Python. I also listed 3 common mistakes many beginners make. On top of that, I also showed a new method to learn programming which is better than watching video tutorials and getting stuck there. I will leave the link to this video and all the other resources I discuss today in the description. If you are someone who is scared of programming like I was in the beginning. Or if you have tried other programming languages but failed to learn coding, Python is the right choice for you. But, if you are willing to take up the challenge and want to open more opportunities for yourself in the tech industry, this second programming language might be a better option for you. And this programming language is Java. I could have easily replaced Java with C++ but I find C++ a little harder to grasp as a beginner and Java does most things that C++ does for you. That’s why I recommend Java over C++ to the beginners. Java is a more popular option than Python for backend applications in the industry and that’s why I believe Java sets you up for better long term success in the industry. To learn Java, I have already made a step by step roadmap that will give you everything you need for free. But neither Java or Python can help you make beautiful websites. For that you need to learn web development. And that’s the third option that I have for you. Web Development has 2 parts. Front end development which helps you decide how a website looks and behaves. And Backend development which decides what happens on the server side when you perform some action on the website. If you don’t know what all these things mean, don’t worry about it. I will provide you everything you need today. For front end development, we have 3 building blocks and these blocks are HTML, CSS and Javascript. Often CSS is not enough by itself. You might want to learn a CSS framework that will make your life easier. Same is true for Javascript. Using a Javascript framework or library like Angular or React is very common in the industry. And then there are some other technologies like Redux and Next that can further improve your development experience depending on what you are building. That’s all for the front end. Step by step process with all free resources for everything that I just mentioned can be found in this video. This video also covers the back end part of web development. For the back end, you might want to learn a server side language like Python or use Javascript with the help of Node. Like in the front end, you would want a framework like Django for Python and Express for Javascript to make your life easier. As you can see, this path is a little longer than the other 2 paths we discussed. That’s why if you are someone who can not stay motivated for a long period of time or you are someone who is scared of programming, this path is not for you. But if you can persevere and develop all the skills needed to be a good web developer, this path pretty much guarantees a good job in the end. Only caveat I would like to mention here is that there is a big “No Code” movement going on right now. This movement enables people to build websites without using any code. So, many people believe that the future of web development is unclear. But for now, there is plenty of demand for web developers. To be fair, the future of most technologies is uncertain as things change very fast in the tech industry. So, I would not make a decision based on the fear of the future. You will anyway have to learn a lot of new technologies as your career progresses. Once you learn one technology, picking other technologies is not going to be that hard. So, the big question is which of these paths should you pick? I have provided you the reasons for picking each path already. To summarize, the Python path is easier than the Java path which is easier than the Web development path. And for job opportunities, Web development has more opportunities than Java which has slightly more opportunities than the Python path. What makes this choice even more difficult is that different paths require different levels of Math skills. I will tell you what math skills you need for each path shortly but for now, just take my word for it. Python and Java path require similar math skills whereas for Web Development path, you might be able to survive without knowing any Math. Based on these factors, different people should pick different paths. And as Socrates famously said: “I can not teach anybody anything, I can only make them think”. My goal in this video is to ask you questions and help you decide what will work for you. Software Engineering is all about trade offs. What better way to start your journey than understanding the trade offs between different paths you can take. Personally, I believe I am good at Math and I am ok challenging myself. So, I would pick the Java path. Once you have built basic programming skills, I am sure you would want to get paid to write code. One way to do that is to become a freelancer and go to websites like Fiverr or Upwork to find clients. By just learning basic Python or Java, the chances of you becoming a freelancer are lower. That’s because most freelancing jobs that are available would require web development or mobile development skills. The other safer option you have is to work as a Software Engineer for some tech company. And when you apply for a job at a tech company, they would do coding interviews to see if you have the required skills. In smaller companies, especially for web development roles, you might be able to get a job with the skills you have learnt so far. In bigger companies, especially for backend roles that you might be able to get by learning Python or Java, they will ask you algorithmic style questions in the interviews. Many people seem to hate these interviews but for me personally, cracking these interviews has opened so many doors. So, I highly recommend preparing for these interviews. To prepare for these interviews, you need to master Data Structures and Algorithms. Everything that you need to learn data structures and algorithms, you will find in this video that I made. I also cover 3 big mistakes people make when it comes to Data Structures and Algorithms in this video. When you learn data structures and algorithms, you will come across this concept called big O of an algorithm. In simple language, big O is nothing but how many times a particular piece of code runs in the worst case scenario. If what I said makes no sense to you, that’s fine. What you need to know is that answering these kinds of questions requires knowledge of Math. In an algorithmic style coding interview, after you finish coding up your solution, the interviewer usually asks big O of your algorithm. And that’s why, you need to know some basic math concepts to crack these interviews. Like I mentioned earlier, in some cases, you don’t need to go through algorithmic interviews. These are usually web development jobs at smaller companies. For those jobs, you might not need any Math. But to get most other jobs, you would need to have some basic math skills. Now, it’s very hard for me to cover all the Math skills for you here. That’s why, I already made a video on 5 basic math skills every programmer needs. Along with that, I will also provide a link to a good free course for Math in the description. Learning Data Structures, Algorithms and Math is one thing, but cracking the actual coding interviews is a totally different beast. That’s because your learnings so far are purely theoretical and you have not Stress Tested yourself at all. In software engineering, stress testing is a process of testing your program under unfavorable conditions. A common way to stress test a service is to bombard it with a lot of artificially generated requests and see if it can withstand all that pressure. If you have made it so far in the video, I believe you have already stress tested my content. So, I highly recommend that you subscribe to the channel. Jokes apart, we need to stress test you for coding interviews. For that, you will have to go through a lot of interview style problems and see if you can solve them within the interview time frame. And Leetcode is the best resource to practice these questions. I solved more than 500 Leetcode problems to get my current job at Google. But in this video that I made a few months ago, I provided the absolutely essential 150 problems for you. I also shared all the strategies I used to crack jobs at Amazon and Google. So, do check it out. We have covered all the hard skills you need to become a programmer. But are these hard skills enough? Reading all your comments for the last one year, there’s one thing I am 100% certain about. And that is most people fail to learn programming not because they are not good enough. It’s because they are wasting away their life hoping to find some magic elixir that will cure all their problems. Worse, many expect it to be delivered to their mouth by some Youtube guru. I hate to be the one to tell you this but neither me nor anyone else can do it for you. You yourself will have to find that motivation inside you and build habits that will help you learn programming consistently. Here are my learnings from the book Atomic Habits by James Clear that will help you do exactly that. My name is Sahil and I will see the transformed you in the next one.