Here is how you should learn to code - a complete roadmap

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey guys how's it going you guys have been asking me to create a roadmap for learning to code for a while now well here it is your complete roadmap for learning to code let's get right to it [Music] so what should you expect from this roadmap how should you use it and who is it for well this roadmap is a project-based approach to learning the fundamentals of programming it is divided into several modules each of which contains a project that you need to complete along with a bunch of other resources for topics you will need to learn in order to be able to complete that project in addition to that each module has multiple self-assessment problem solving questions as well we'll talk more about the modules later in this video but the idea is to start with module 0 and make your way up my recommendation for each module is to start with the project first every project is a simplified version of a real world problem spend some time trying to understand the project requirements to try to figure out exactly what you need to solve for even if you feel like you know exactly how to finish the project don't just start working on it yet go through the resources to learn or review the recommended topics for each module once you're done with the topics work through the self-assessment problems and if you don't do well on those problems return to the topics again and review the areas you're weak at repeat this until you feel comfortable with the self-assessment problems when you feel ready proceed to the project and once you complete your project move on to the next module this project first approach not only gives you motivation to learn the topics but also helps you relate those learnings to the problem at hand killing two words with one stone that being said this roadmap is not a tutorial and it should not be treated that way it is also not a substitute for college degree or even a bootcamp each module suggests a list of topics to learn and provides you with recommended resources to do so but how you go about learning them is up to you also some of the projects may be vague and ambiguous you will need to define them yourself to come up with concrete requirements for what you want to build or how you want to solve the problem it's okay if you don't know exactly how at first but as you learn the related concepts you should start forming an idea in your head about how you'd want to approach the project and this is by design because no one will really give you a set of instructions or a step-by-step tutorial in the real world things are always vague and ambiguous and if you want to be successful as a software engineer you will need to develop those skills to deal with that kind of uncertainty also please don't ping me on instagram asking for help on the projects every project i've created is based on simple and common data structures and algorithms so you should be able to find enough information online finding that information and tying it up with your solution is on you because that is also an important skill you need to build and i want to reiterate again that this roadmap is just going to cover the core fundamentals it's not going to make you a full stack engineer or anything like that but will help you learn the foundations of programming if you want me to create follow-ups to this roadmap covering more of the software engineering side of things let me know in the comments below and finally this roadmap for the most part is designed for beginners it will be a great resource for you if you are trying to learn on your own or a very good companion if you are still in school if you're not a beginner but are looking to brush up on your fundamentals for a career switch or upcoming interviews then you'll also greatly benefit from going through this roadmap the first thing you'll need and this video kind of goes hand in hand with it is the companion modules for the roadmap that i mentioned earlier in this video you can find them at engineeringwithutsoft.com and don't worry the link won't ask you for your credit card it's free second you'll need to pick a programming language and a code editor or an ide if you already have a pic go with whatever you know and use i've said it many times in my videos programming languages don't matter as much as the concepts but if you just want me to give you a recommendation i'd say go with python and vs code both are simple lightweight and popular choices in the industry this roadmap is all about learning the fundamentals so i don't want you to get stuck up with builders and compilers and linters and libraries and things like that the idea here is to stick to the very basics for that reason all the projects in this roadmap will be console based no ux no front end no back end those come much later maybe in part two or three if i end up making them for now keep it absolutely simple the third thing you'll need is knowledge of the absolute basics of coding primitives variables strings arrays conditionals loops objects classes and functions if you don't know these spend a week or two learning about them and then come back to this roadmap module 0 will help you with that or you can use any of the resources i've mentioned next the fourth thing you'll need is resources to learn your concepts for books i already have a video recommending books for learning data structures and algorithms so if you haven't already watched it please give it a watch for free resources i have a ton of recommendations on my video how to become a software engineer without a computer science degree so feel free to give that a watch as well i will also put all of that information and links in the description below for paid courses there's only one recommendation i have educative even as someone who has around 15 years of experience i still regularly use educative to keep my knowledge up to date the reason is because their content is precise relevant with the trends and of top quality whether you're a beginner or an experienced software engineer there's high quality content for literally everyone and because they also value what i do in this channel as a content creator around engineering education they've been amazing at supporting this channel so a huge thank you to educated but it's just not me because of their top-notch content over 800 000 software engineers from all over the world and from top companies like microsoft google amazon facebook and netflix regularly use educative for leveling up their skills if you decide to go with educative for this roadmap specifically i recommend three courses first learn python 3 from scratch this course will teach you everything you need to know before you get started with this roadmap so you can take this course even before you begin second is python 3 from beginner to advanced this one is best suited as a companion for the roadmap this will teach you things that will be useful for you as you work on the projects this course also has a lot of fun exercises and third data structures and algorithms in python this focuses more on the data structure side of things so you can follow it alongside the modules you're working on so i've given you choices between books free resources and my recommended paid resources so choose what fits your needs and budget but if you do decide to give educator a try you can use the link educative dot io slash engineering with utsav to get 10 off your annual subscription the next thing you need is a lead code account the self assessment problems on every module are from lead gold so you will need an account for that however all the questions will be accessible from the free version of lead code so you don't need to worry about having to purchase the premium version but if you eventually decide to get the premium version for advanced problem solving practice or interview preparation i'll put the link in the description below that will give you 15 off your premium plan and finally you'll need the right mindset being a software engineer is all about dealing with ambiguity being curious discovering various approaches and making trade-offs you will get stuck a lot of times and spend a ton of time figuring things out or just debugging an elusive bug so you need to build a not giving up attitude and have a lot of patience who are your tech heroes steve jobs bill gates grace hopper marissa meyer elon musk iron man whoever that is they were all tinkerers they were curious they tried failed tried again failed again but they never gave up because their desire to solve the problem at hand was far greater than anything else that is also the reason why this isn't a tutorial i've said it many times before tutorials give you a false sense of competence and they don't help build any of these attributes that i just mentioned by researching disambiguating and figuring things out on your own you will build a lot of these key characteristics that will help you become successful on the long run all right now on to the overview of the roadmap itself but before that i'm going to ask you a quick favor look i do my best to make honest and useful videos that i think will generally help software engineers of all levels and experience i have a full-time job a family to spend time with and i don't have team or assistance to help me make these videos it's just me it takes a lot of time and effort and for me the reward is to see people enjoy my stuff and find it useful subscribing to this channel is one way to convey that message would greatly help me stay motivated to continue to make these videos i'd also be very appreciative so please consider subscribing to this channel and for all those that have already subscribed i'm super thankful to each and every one of you with that said let's briefly look at the roadmap what data structure each module covers and a real world example of how that data structure is used all right so module one will cover string manipulation and formatting this is something you do very frequently in the real world things like input validation sanitization conversion and internationalization are common practice module two will cover hash tables hash table is a very popular data structure in practice it is a simple concept but quite powerful when you use it effectively for example when you type the domain www.engineering.utsub.com on your browser your browser basically looks at your isp's dns routing table for the exact ip address of my web server that hosts the content of my website that routing table is basically a giant table with two columns the domain name which is the key and the ip address which is the value and that's what a hash table is it stores a bunch of unique keys that are a certain value you give it a key and it'll give you the value very quickly in this case you give it the domain name and gives you the ip address of the server that hosts the content so there you're so that your browser can fetch the webpage to render so yeah you're basically relying on giant distributed hash tables every time you type a domain name on your browser module 3 is about stacks stacks are also quite commonly used consider your text editor when you type something and then hit undo you revert your latest action right well that is utilizing a stack behind the scenes your actions are basically added to a stack which is a last in first out data structure so your last action will always be on the top when you hit undo that stack is simply popped undoing your latest action if you hit undo again the action you performed previous to that one is reverted since that would have been the second to the last action you performed so on and so forth module four is about queues queues are pretty self-explanatory and quite common as well how many of you tried buying a playstation 5 when it released in the summer of 2020 and got hit with the dreaded you've been added to a queue do not refresh the browser message well what's happening there because so many people rushed to buy the product at the same time the web server reached its capacity and could not handle any more traffic but instead of just erroring out the load balancer redirected you to a temporary queue which is a first in first out data structure and as traffic improves in the web server the queue is dq'd letting the first person that got put into the queue through to the website then the second then the third just like a queue in the shopping mall module five is all about linked lists link lists don't get enough love but they are quite handy data structures especially if you're unsure about the size or capacity ahead of time are you the kind that has 100 tabs open on your browser well then you've been using linked lists daily when you press control tab to cycle between your tabs you basically are making your way through a circular linked list module 6 is recursion recursion is usually the first thing that makes new programmers nervous and that is expected because recursion is not a natural thing to happen in real life it's a very abstract and mathematical concept and that makes it a bit tricky to grasp at first so don't fret it if you end up spending more time on this module however in the real programming world though you'll see recursive data structures quite frequently for example clicking on a folder then clicking on the subfolder and then clicking on the subfolder of that folder this is a recursive action a folder can have a file or a folder and then all those subfolders can also have the same definition where each of them can have more files or more folders you get the idea module seven is binary search if you need to search anything that is ordered you will most likely use binary search have you ever searched a physical dictionary for a definition how do you do it you surely did not look page after page word afterward until you found the word you're looking for right you must have started in the middle of the dictionary to check whether the word you're looking for falls on the left or the right if it falls on the left you search the left side of the dictionary and if it falls on the right you search for the right side of the dictionary you keep discarding one half until you've landed to the page that has the word you're looking for well this is what binary search is it is a very efficient search algorithm that discards half of the search space at every iteration greatly reducing the time it takes to search for something module 8 is going to be about trees trees are very common data structures in the real world they are very useful in storing data in a hierarchical manner for example you might have a tree that represents a company structure each node in the tree has a name and each node can have a list of employees and each employee can have a list of subordinates uh but not just that trees are the foundations of storage systems like sql server and a critical part of searching for example when you search for something on youtube it auto completes your word or sentence for you right under the covers it's basically walking through a special kind of tree called a try to produce those suggestions module 9 will build up on trees and move on to graphs graphs are everywhere social networks recommendation systems maps machine learning you name it graphs are lurking behind the scenes graphs sound intense because they are often spoken about in a very mathematical lingual for example something like there is an undirected graph made up of x edges and y vertices which may or may not have disjoint components how can we find the shortest path from vertex a to vertex b as a beginner software engineer this may be overwhelming but don't worry in reality this is basically a saying we have the map of united states that has a bunch of states with multiple roads connecting them and we can drive on those roads on either direction in addition to that some states like alaska or hawaii may not be accessible by roads at all given that information how do you think is the best way to drive from new york to california not that bad right this is basically how maps work think of graphs as less structured trees in fact a tree is a special kind of graph a connected cyclic and typically undirected graph but on occasion though graphs are also a bit sneaky in that they appear in places that you don't think they belong for example consider a spelling checker you know the one that underlines misspelled words with those squiggly red lines well one of the ways you can build something like that is by modeling a dictionary of words as a graph and then using an algorithm called edit distance or levenstein distance to figure out whether a word could be misspelled or not modeling non-graph-like structures as graphs can be a bit tricky at first and does take some time and practice and finally module 10 is your final project the final project is open-ended instead of me telling you what to do i encourage you to try to come up with your own ideas and build something interesting using all or most of the topics you've learned from module 0 through module 9. you can even use code from your previous projects as a starting point and if you are a subscriber of this channel i've turned the final project into a small competition to give you some extra motivation to go through the entire roadmap whoever submits the most interesting and well done final project will win a 250 gift card from a retailer of your choice to participate you need to do the following we subscribe to this channel complete the projects for module 1 through 9 create and complete the final project upload your project to github and finally send me your project link as a dm on instagram at engineering with utsa i'll pick the project that i think is the most interesting and well done but do remember to put all the details about your project on the readme file within your github project repository before sending it to me and since completing the entire roadmap takes time and different people have different progression timelines i will accept all final project submissions until may 31st 2022 that should give you around six months to complete the entire thing i'll review the projects in june and announce the winner in july 1st 2022 also if you're an experienced software engineer watching this and know everything on the roadmap already please don't submit the final project just to win the prize the goal of having the competition is to encourage beginners to not give up and try to learn and that's all for the roadmap look is this entirely all of the data structures and algorithms you need to know not at all there are so many more we didn't even talk about common ones like binary search trees or heaps and there are so many variations of trees and graphs but you'll be totally fine to learn those as a need to basis as long as you have a strong conceptual foundation of these data structures that i just mentioned let me know in the comments below what you thought about something like this what did you think about the project base approach and what do you think about the idea about having a youtube video as a high-level summary and then having the resources somewhere else so that you can reference and reuse them however you need and this is also just the most fundamental knowledge you need to know to get started as a programmer and programming is not software engineering so let me know if you'd like to see part two or part three or part four that will build upon these and take you towards full stack engineering infrastructure engineering different frameworks devops cloud services and perhaps even building distributed web applications if so make sure to let me know because i'm already very limited on time so unless a lot of people let me know that they really want something like that i won't be spending time on making it also if you found this video useful and think others would benefit from it as well please do like the video and share it with your friends family and various social medias and finally if you haven't already please subscribe to this channel so you don't miss more videos like this one that i make purely driven by your requests and if you have a personal question to me dm me on instagram at engineeringwithdosa good luck with all the learning and the projects remember not to stress about it too much have fun and enjoy the progress i'll see you in the next one cheers [Music] you
Info
Channel: Engineering with Utsav
Views: 40,807
Rating: undefined out of 5
Keywords: how to learn coding, web development, software development, how to learn coding for beginners, learn to code, learn to code for beginners, learn python, learn to code in python, data structures and algorithms playlist, data structures and algorithms, data structures and algorithms in python, software development tutorial for beginners, software development for beginners, learn coding python
Id: dPb1bg1mVLg
Channel Id: undefined
Length: 19min 0sec (1140 seconds)
Published: Fri Dec 10 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.