Transcript for:
Roadmap to Learning Coding: Choosing Your Programming Language

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.