Transcript for:
Python Learning Roadmap

Coding has changed a lot in the past few years and naturally so has how you should learn it. If I was learning Python again completely from scratch, I would do a lot of things differently. So, let me share those with you in this video. Now, the absolute first thing that I would do before I start learning any of the Python features or syntax is actually a bit of research about the language. I'd want to understand what it's good at, what I can actually build with it, and then try to set myself a goal for why I want to learn Python as opposed to a different programming language. This way I'll know that Python is actually the right choice for me. It is worth me spending the time learning it and I can be working towards something like completing an application or finishing some type of script and I know that my learning actually is going to have some tangible outcome. When you're programming it can be really difficult especially when you're starting out and a lot of people switch between languages or don't really know where they're going. So it's really important to set the direction correctly. make sure this is the language that you want to learn and give yourself some kind of goal to work towards so that you know why you're doing all of this work. Now, after I was certain that Python is the language that I want to learn, the next thing I would do is try to make sure I get my machine set up for Python development and learn about the different environment and tools that I need to actually start writing Python code. This step shouldn't take very long, but a lot of people skip it or they don't find the right type of guide, which means they get into a tutorial and they're immediately overwhelmed because they don't even have Python on their machine. They don't know how to run the code or execute it. They don't know what a code editor or IDE is. So, you want to be looking for videos or at least articles or lessons online that will share with you that kind of step zero where you can get everything set up and feel comfortable before you start diving into the code. And by the way, if you want that type of video, I'll leave one right here. So, now that I've got my machine set up, what I'd be focusing on is mastering the basics. Now, I'm going to give you an entire list of topics that you should master. And after that, I'll explain exactly how you should learn these, especially when you're just starting out. So, excuse me for reading my phone. I don't want to forget any topics. But I have data types, operators, variables, conditions, conditionals. So, this is like if, else, else statements, looping, so for loops, while loops, looping over different objects. Then I would focus on things like lists, dictionaries, and sets. Kind of the main data structures in Python beyond things like strings and other more basic data types. And then I would look at functions. Now, I know that sounds like a lot of stuff, but this is going to cover almost 80% of all the programming concepts you'll really ever need to know. And if you can understand all of those things, even if you're not yet a master at them, it's really going to help you progress quite quickly in your programming journey. So that's great. We have this long list of things to focus on. How do you actually learn those? Well, my personal recommendation, at least when you're right at the beginning, is to learn these from videos. The reason why I like watching video courses at the beginning, is because at this point, you don't yet know what you don't know. There's going to be a lot of things that you won't know to go look up or find articles on or even ask something like Chad GPT. But if you can find a good educational resource, like a YouTube series online, and it has a good instructor, they're going to be filling you with a lot of different pieces of information and just sharing a bunch of nuggets that you wouldn't get if you were trying to learn all these topics independently or googling all these things or finding them out yourself. So, what I would do now is actually commit the first day or two of my learning to going through a bunch of different resources. I would recommend YouTube tutorial series or things like Udemy courses. I would watch the first few minutes of one of the lessons that they have there. I would make sure that the teacher makes sense to me, I can understand them, their teaching style is meshing well with me, and I have confidence that this series will be good. And then I'd read some of the comments or some of the reviews, and just try to find a really highquality resource that I could follow for the next few hours to really get these basics down. There are tons of different tutorials online, tons of amazing instructors. Obviously, I teach a lot of Python on this channel. I'm biased. I think my videos are good. You guys can check those out for beginner tutorials. But if my teaching style doesn't work for you, then don't stick through the entire 6-hour long video, go and switch to someone else that works better. Again, commit a little bit of time up front, find the best resource you think at the current time is going to help you learn, and then commit to that for the next few hours to master these basics. And just one last thing here, if you are following along with video tutorials, I highly recommend replicating everything that the instructor does on your own computer. So when I was learning, what was really effective for me is I would have a video on one screen or one part of my screen and on the other screen I would have my code editor and I would constantly be pausing the video, typing things out and trying them on my own and trying to predict what the instructor would say next. It's really important that you're fully engaged and actually interacting with the video rather than simply watching them and going through a 20-minute video where you're not actually doing anything and just listening to someone code. You want to be coding alongside them, pausing and taking your time. Meaning, a video that's 15, 20 minutes long, it might take you an hour to get through. That's totally fine, but that's the best way to absorb information. Now, at this point, I know that a lot of you guys are thinking about AI. Hasn't AI changed things? Shouldn't I be using AI to learn? And the answer is yes. And I'm going to talk about that in one second. But something else that AI has impacted is the ability to land a job in 2024 and beyond. Now, that's why I wrote an entirely free guide with the sponsor of this video, HubSpot, that explains how to land a developer role in the world of AI. Now, this draws on my over decade of experience, and it discusses the best programming languages to master and the most effective ways to learn them. It also gives you the best practices for crafting your portfolio and your resume, along with YouTube recommendations and other resources that can help you enhance your programming skills. I've left a link to this in the description that you can check out completely for free. Personally, my favorite part of this guide is the long list of resources like YouTube channels and websites that offer fantastic free ways to improve your programming skills. Now, this entire guide is really focused on how to distinguish yourself as a developer in the world of AI. And it offers essential insights and tips to do exactly that. I'm thrilled to collaborate with HubSpot on this resource. So, a massive thank you to them. And with that said, let's get into the rest of the video. So, after I had gone through a bunch of videos and kind of gotten the theory out of the way, what I would be focusing on is practicing as much as possible and really nailing all of these basic concepts until they become memorized and until I really understand them quite well. Now, you don't need to memorize all of the syntax per se, but you need to know how all of these things work and be comfortable using them. So, how would I do that in 2024? Well, what I would do is really lean heavily into AI here. And I would get AI to generate a ton of practice questions for me. One of the biggest issues when you're trying to practice programming is finding a way to do that in small bits or to get a bunch of great practice questions to go through. Now, courses can help you with that. And there is some resources online, but I would really be going to something like chat GPT saying, "Hey, I struggle in these certain areas and I want to do a lot of practice. Can you give me some small practice questions in Python?" For small questions like this, it's very likely that it will generate good questions and it can verify the answers for you. Anything more complicated? Probably not. But for really basic stuff, you can almost entirely rely on it to be correct. It can make mistakes, but at least for the basics, it can generate hundreds of different problems for you and you can just do a ton until you really, really feel comfortable with the basic Python syntax. Now, after that, and I had gone through a ton of different practice questions. I'm talking about hundreds doing maybe 10 20 per day depending on the amount of time that I had. What I would do is focus on walking through beginner projects. It's one thing to get the basics of a language down. It's another thing to understand how to architect software, even if it's small programs, you know, 50 lines of code, 100 lines of code, and how to take all of this theoretical knowledge and all this syntax and combine it together into something larger. Now, for this, what I would do is go and find YouTube videos that have complete project walkthroughs. I have a bunch of beginner videos on my channel where I do exactly this that you guys seem to really enjoy and I walk you through from the entire beginning where there's no code and build everything out and explain my thought process step by step. This way you can get the experience that I have, you can see exactly how I do things and even if you're not capable of doing it on your own, at least you're learning and you're picking up those pieces. So I would follow along with a tutorial like that. I would try my best to pause the video and attempt certain portions of the code on my own. And then what I would do is a few days later, I'd go back to that same video and I would try to code out much larger portions of the project myself before referencing back to it. Or I'd go to another video and same thing. I'd slowly try to become less reliant on it and use it more as an answer key rather than something that's telling me step by step what to do. Now, at this point, I would ideally feel really comfortable with basic programming and even creating some small projects and hopefully start to build my confidence a bit. This is where I would then go into learning about object-oriented programming. I wouldn't try to rush this and learn it too early, but once I go through all of that practice and just do a ton of coding with the basic features, OOP is the natural next step. Now, I have a video that has almost 3 million views that a lot of people find teaches oop very effectively, object-oriented programming. So, I'll link that on the screen here. There's not much more to say than that, but you should learn object-oriented programming, which is not really that complicated and shouldn't take you too long. So, at this point, once I've learned object-oriented programming, I know most of the core features in Python. Now, there is some more advanced things to learn later on. But at this point, I would focus on trying to do something cool and interesting. Personally, what I would do is try to make a game with Python using a module like Pygame and try to do things like sending an email or messing with the OS module or doing a quick automation script. I'd really want to focus on actually putting my Python skills into practice and try to make something cool, interesting. Now, probably I need to follow along with some tutorials or I need to learn a bit about something like Pygame or some other kind of built-in Python modules, but I would really want to make sure I build something that I actually found cool and that I could work on maybe for a few days or a week or two weeks and just really refine my skills and actually put it into practice doing something that is completely for me. I think that's super important. So, I'd recommend at this stage pick something like a game, make that in Python and that's kind of the next step before you move forward. Now once I built something cool like a game in Python, what I would go into next is web development with Python. Now this is really the main area where Python shines. It's where you can really build some interesting applications. And even if you don't want to be a web developer, it's assumed in a lot of rules that you at least have some basic understanding of these concepts. So that's where I would go to next. Now, same thing, I have a list here. So I'm going to read a few topics you should really focus on here. Some of them are Python Python specific, sorry. Some of them are not. So the first thing I would focus on is learning about HTTP methods and just the basics on how the internet actually works, how you serve a page, how you view a page, and how you interact with it using things like requests. Then what I would look at is the request module. This is a module you can install in Python that allows you to send various requests to things like APIs, another thing that you should learn about, and different websites. After that, I would try to build a really simple website using a module like Flask. This is a really simple way that you can get a website up and running in just a few minutes. I've got lots of tutorials on this channel, but it's definitely worth looking at. After that, if I was interested in web development, I would move on and learn about something like Django. Again, I wouldn't spend a ton of time here, but I would want to be familiar with it and have used it before. And then lastly, I would maybe dabble in something like fast API just to get a sense of these three different Python frameworks, all of which you can use to build websites and APIs. So, that's it. I would learn Python web development and then I would move on to some advanced Python features. Now the features I would focus on specifically are decorators, generators, context managers, metaclasses and dunder methods. Now you really don't need to understand these super well to be good at Python, but it is helpful to really increase your comprehension of the language, especially when you start working with a lot of different frameworks or modules where these features might be built in, but you don't directly touch them. So I would learn these different features. It shouldn't take you that long to get a hang of them. And then at this point, you'll know a lot more about the Python language as a whole. You'll have some understanding of the advanced things that happen behind the scenes. And that's really where most of you can stop when it comes to actually mastering Python. After that, what's really next is just getting into specific niches and using Python for well, what it's used for, building various applications. So, I have a long list of apps or different areas that you could get into once you've mastered all of those different topics. So, let me go through them here. We have machine learning, we have AI, we have interacting with things like LLMs, we have data science, we have becoming a back-end developer, doing things like DevOps engineering, doing automation, working with robotics, integrating with Raspberry Pies, and the list goes on and on. Really, at this point, it's about learning the specific tools and modules that actually allow you to make cool stuff with Python, and then getting good at those specific frameworks or modules. Regardless, that'll wrap up this video. Obviously, this is subjective. This is just how I would do it if I was starting over. If you have different ideas, leave them in the comments down below. And with that said, I hope you enjoyed the video. [Music]