The Ultimate Self-Taught Developer Curriculum

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] in this video i am going to share with you the ultimate self-taught developer curriculum which will be a long list of topics that you need to master to become a software engineer now not only will i give you this list i will tell you the order in which you should learn these topics and approximately how much time i would spend on each assuming you had between 15 to 20 hours per week to learn this stuff so what i've kind of done is broken this into a 12 month schedule saying in month one learned this and month two learned this etc etc again assuming that you have between 15 to 20 hours per week obviously this will widely vary depending on your skill level how naturally this comes to you if you have more time less time i just figured it'd be nice to kind of put it in a one-year schedule and give you you know where i would hope to be by each month with 15 to 20 hours per week so just add a bit of credibility here i've been teaching programming for about six years i've been programming myself for about ten i have a very good understanding of what it takes to get good at programming in the order in which you should learn specific topics in fact i have a programming course programmingexpert.io you can check it out from the link in the description that teaches this exact curriculum pretty much and lastly if you already know how to code you already know a lot of the topics on this list then what i would recommend you do is check out the sponsor of this video so what makes a great programmer now you may have thought about this often but there really is no definitive answer now if you ask me i'd say good problem solving skills lots of practice and likely some other guidance now fortunately for us scalar the sponsor of today's video has a solution that can make you a great programmer and help you crack pretty much any tech interview that you can think of and yes by that i mean at companies like microsoft meta and google now scalar is a tech school that was founded by industry veterans that worked at top tier tech companies one of them actually worked directly with mark zuckerberg in the early days of facebook and helped to build the messenger app and other parts of the facebook platform scalar's curriculum is built keeping in mind the needs of tech companies vetted by those who work there currently and with scalar you get mentorship as well as dedicated interview career support to help you along your journey last year they helped two thousand plus engineers get into top product based companies now mastering problem solving data structures and system design is now only one step away give scalar a try by clicking the link in the description and enrolling in a free masterclass where you can learn how to master technical coding rounds at main companies thanks to scaler for sponsoring this video so with all that said let's dive into the beginning of the curriculum here we'll start at kind of month one so in month one the very first thing you need to do is determine what type of programming you actually want to do now this may be hard if you've never programmed before but you need to spend at least a day or two research researching kind of different areas within programming and figuring out what interests you and what you want to build you can always change later on if you find that you're really bored with what you originally chose but you need a starting point you need a programming language that you're going to be learning so you need to pick you know do i want to do ai do i want to do research do i want to do data science why am i learning to code first of all what interests me what do i want to build once you know those things it's very easy to find languages in the specific domain for example if you wanted to be a front-end web developer you'd probably want to learn javascript if you want to do more back-end stuff maybe python maybe go maybe java c plus right there's a bunch of different options so that's kind of what you need to figure out first now once you find a programming language that you want to learn you need to immediately go right to the fundamentals no building stuff no creating complex applications you need to understand what is an if statement what is a for loop what is a while loop how do i add numbers together what are different data types how do i print something how do i collect console input all of the fundamental programming concepts if you want a full list you can check out the curriculum on programming expert it's free you don't have to pay to view the curriculum you can go through and view kind of what i would teach in terms of programming fundamentals moving on from there i would imagine that learning just the fundamentals of programming setting up your development environment kind of getting comfortable writing basic code would take you about a month if you were putting again 15-20 hours per week to really get good at it to really understand what's going on that's how long i think it would take the average person again some people may be much faster than that so once you've done that what i would recommend is trying to do some type of exercises trying to do some type of problems going through assessments going through practice questions whatever is going to help you practice and actually be writing code and learning this skill you need to do that because it's not enough to just watch the video you have to really understand the fundamentals before you can go any further so after you nail down the fundamentals here the next topic which is still kind of considered fundamentals in my book would be object oriented programming so you're kind of starting month two here the next thing i would focus on learning is object oriented programming now this is definitely more complicated than the fundamentals and it may not even be necessarily offered in the programming language that you're working in but you still need to learn kind of the paradigms of that and all the different topics within it for example you need to learn about classes and objects you need to learn about attributes you need to learn about methods you're going to have to learn about inheritance about abstract classes interfaces based classes you know all these different things right there's a lot of topics within object oriented programming again if you want a full list you can go to something like programming expert and you can see kind of the curriculum again that's free you don't have to pay to see that so that's what i would do in kind of month two learn object-oriented programming and then really start working on maybe some larger projects when i say large nothing massive but where you're writing a few classes you're having classes and objects interact with each other you need to practice all of this stuff and do it in some type of format where you're actually writing a program you know you're doing stuff on your own maybe you're referencing solutions or stack overflow that's fine but you still need to be trying to create a majority of this program by yourself and kind of struggling before you just dive in to the answer book so that is what i would do in kind of a month or two now moving on to month three here at this point in time you should be very comfortable with programming you should know how to solve basic problems you should have the fundamentals down and hopefully you've memorized a lot of the basic syntax like you don't need to refer to maybe some base code or something like that all the time to actually get anything down at this point i would really really start working on some type of project some type of exercises and just continuing to practice these skills these are things that it doesn't matter what programming language you work in you're gonna have to know and you're gonna have to be very very good at so personally i would commit probably a month to just going through different exercises going through different problems and really testing myself and making sure i understood all of the concepts very very well before going any further because if you try to jump further without knowing it it's going to be very discouraging because stuff gets even more complicated right in kind of the next month that i'm going to go through so that's kind of month one to three make sure you learn the basics the fundamentals of a programming language object-oriented programming and then you do a ton of exercises and a ton of practice then you can move on to month four all right so moving on to month four here again at this point you should have a very solid understanding of the basic programming concepts should be comfortable writing code and ready to kind of move on to a new topic and learn something new now this is where i'm going to recommend that you start diving into advanced programming concepts some people may disagree with me here but i think it's a good idea to really nail everything programming before you dive into stuff like software engineering tools and more kind of you know add-ons to programming that's what i'll call them so in month four i would start looking at advanced programming concepts now some of those concepts would be things like decorators splitting your code into different modules and different packages learning how to run your code from the command line how to compile code manually stuff like that is important next i would learn stuff like iterators generators understand some kind of underlying concepts in the programming language that maybe you've been taking advantage of but you didn't really understand how they worked i would learn about asynchronous programming i would learn about threading and multi-processing i would start looking into memory management understanding stuff like pointers versus references you may have learned that earlier hopefully you did but if you've not already at this point then i would try to learn topics like that especially if you're in a dynamically type programming language you probably want to start looking at some constructs maybe a little bit outside of that and just kind of exploring you know how do other programming languages work not just the main language that i'm in continuing here i would learn about some operating system level concepts which is kind of what i was discussing like how does a cpu actually work what is a cpu what's a core versus what is a thread what does it actually mean to run my program what's happening on the computer how what is binary right stuff like that you don't need to be a master app but i think you should have some perspective on as a programmer or someone who wants to become a software engineer so that's what i would do in kind of month four probably month five and six as well is just get comfortable with these more advanced topics try to dig into how a computer works how do programs actually work how are they being executed what is a file what is source code what is byte code those are things you want to understand uh next once you've done that in this kind of i guess four to six month period here your month four to month six what i would do is work on harder programming problems right maybe at this point you go to something like leak code or algo expert you start just trying maybe some of the easy and medium problems and seeing okay how do i deal with um you know problems i've never seen before stuff that's completely new what is my problem solving skill like uh not just pure kind of coding and i guess regurgitating stuff that you've already learned how do i look at a unique problem and use code to solve it that's a skill set that's always going to be important that at this point i think you start diving into so that's kind of what i have for month four to six learn advanced programming concepts learn operating system level concepts learn threading multiprocessing how a computer works what is a cpu what is a thread what is a core and then work on some more advanced problems some more difficult ones and then move on to month seven all right so at this point here you've been programming for about half a year approximately if you're following the schedule right and you should have learned a lot of stuff right you have a lot of knowledge in your head it's a lot of new stuff hopefully you've been applying it along the way and you've done a lot of practice problems and you're getting good at that now is where i think you need to start looking into what is good program what does it mean to write a good program what are good programming habits what is clean code how do i not just solve the problem but how do i solve it in a more optimal way how do i make my code easier for other people to read easier for other people to add to etc uh this is when i think you start getting into building good programming habits and also reading a lot of other people's code going to github going to stack overflow and just maybe spending an hour or so whenever you want to do this looking through some production level code understanding how code bases are kind of laid out how do they organize code what happens when i have you know 10 000 code files how do those kind of get laid out where do i put those again you're not going to be a master at this you need to probably learn this on a job but this is something that i would start trying to do learn good programming habits learn what is clean code what is good code how do i write this in a more optimal way there's a lot of patterns you can learn that are like that and again reading and kind of reviewing a lot of other people's code now continuing here another thing i would do is i would start learning git and github just the basics nothing crazy but i would start practicing committing everything that i write in terms of code to my github repository i would start seeing okay you know what happens if i have a conflict what is a branch i start learning these basic github kind of terms and getting comfortable using the command line how do i copy a file how do i move a file maybe you don't always have to touch your mouse now you can do a lot of stuff with commands that you know like bash commands windows commands you know mac commands terminal commands whatever you want to learn but i would get you know familiar with some of those commands and understand some of these software engineering tools which is what i'll call them all right so now we're moving on to month eight at this point you should be good at programming you should know the basics of git and github maybe you have some bash commands under your belt you're starting to understand what is clean code what is good code how do i write better code how do i not just solve the problem how do i solve the problem well now this is the point where i think you need to jump into another programming language you don't need to become a master you don't need to be an absolute pro but i think you should study and look at another language and ideally one that is different than the programming language than you currently know what i mean by that is pick something that is fairly different maybe you go from a dynamically typed language to a statically typed language uh you go from something it's a very high level language to maybe a lower level language maybe you try learning something like c plus plus or c something that's considered harder than maybe a python or a javascript this is going to give you a really good perspective for different kind of programming paradigms the way that different programming languages work and the fact that there's always the best tool for the job right when you have two different programming languages one is not better than the other but one is better at something than the other one is just like the other one has its pros and has its cons or places where you would use it in places where you wouldn't use it i think that's an important perspective to build and learning another programming language is always something very very valuable especially because a lot of the stuff you already know is going to carry over then you're going to learn about a little nuances tweaks and you know maybe this one's faster or slower you're going to just discover a lot of things by jumping into another language so that's what i would do here you don't need to be a master but that's what i would focus on another programming language all right so now we're nearing kind of the end of the journey here you've been programming for a long time hopefully you're getting good hopefully the basics are now kind of nailed down you know everything that's totally fine you feel comfortable solving most problems in the programming language that you originally chose you've just learned another one you know you've got some basics in that now unfortunately it's time to learn some of the hard stuff that everyone hates learning now there's a reason i left this till the end because this is a fairly discouraging section for a lot of people but this is when i would start looking into the dreaded data structures and algorithms i would also start potentially looking at mathematics related to programming maybe just getting some perspective of what like a proof looks like for an algorithm looking at something like discrete mathematics or linear algebra you don't have to do that i'm just saying maybe that's something you want to just take a look at to have an appreciation for how complex some computer science proofs and topics can really be i would also maybe start considering looking into computer architecture that's you know what is a transistor what are different gates what's an and gate or gate nor gate how is uh you know a cpu designed stuff like that again you don't need to do this but that's something that i would have learned in my computer science degree and that i'm very thankful that i did learn so i'm kind of just recommending it here but overall you're going to be wanting to look at a lot more theory related to computer science so data structures and algorithms time complexity big o notation big theta big omega how you determine the running time of an algorithm how you write specific algorithms sorting algorithms searching algorithms what is a heap what is a binary tree what is a b tree there's a lot of stuff like that that will come up in an interview scenario so if you're trying to prepare for a technical interview this is something you're going to have to kind of already know before going into that so i would spend two months probably on this type of stuff right so month 9 to 10 i guess and then i would move on to the next step all right so let's say now we're on month 11 or 12 i can't really keep track of exactly what i've said at this point but let's say you're near the end of your journey right you did the data structures and algorithms you have a foundation in that maybe you dabbled in a little bit of math you looked at some computer architecture now is the point where i would start looking at maybe some more fun stuff maybe you would look at some modules and packages like maybe if you're working in python you start creating a website with python or you start kind of applying your knowledge into building something that's fun it's cool a project that you want to work on that you could maybe continue over a month or two months and then maybe you're going to add to your resume or something like that right so dabbling into that kind of stuff so external packages external modules stuff that's been built for you to build with other than that i would also start potentially looking at something like system design now this is something that you would really not do until you're like a senior software engineer but it's never a bad idea to get again a very minimal perspective of all of these different topics just so that if you ever were asked about something like this you'd at least have some idea what the what the question was right so when i say system design maybe you start thinking about hey you know i know how to code now how the heck did they make something like netflix like what is involved in that in terms of like a devops thing how many servers do they have how optimized does their delivery mechanism have to be how are they serving content that quickly maybe that's something you just want to look into for a few days and kind of research a little bit uh other than that you can start learning about some design patterns so you know common ways to kind of structure programs and start looking into maybe some specific things within your programming niche that you're into maybe you're really into artificial intelligence maybe you're really into data science stuff maybe you start learning some specific tools within that area and kind of getting a bit of a specialty if that makes sense that's what i would do here and then of course always be practicing that's really how you're going to get better so i think with that said that's going to wrap up this video again all of this pretty much with the exception of a few topics especially like in the later sections is taught on programming expert i don't want this to just come across as a huge ad for that product but i designed that with pretty much all of what i just described in mind for you to be the best possible place to learn how to cook so if you're interested check it out from the link in the description use discount code tim i hope you enjoyed the video if you did leave a like good luck in your programming journey and i will see you in the next one [Music]
Info
Channel: Tech With Tim
Views: 148,078
Rating: undefined out of 5
Keywords: tech with tim, programming expert, 12 month course, programming, self taught developer, system design, advanced programming, beginner programming, self taught developer cirriculum, self taught developer topics, how to become a self taught developer, becoming a self taught software engineer, software engineer curriculum, self taught programmer, self taught programmer roadmap, how to become a self taught software engineer, how to become a self taught programmer
Id: vxctuiRlmrs
Channel Id: undefined
Length: 17min 29sec (1049 seconds)
Published: Fri Aug 19 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.