4 Software Developer Roadmaps For 2024+
if you want to become a software engineer and you don't have a road map you're pretty much already screwed I can speak from experience because this is the exact issue I had when I started learning how to code nearly 10 years ago one day you load up the computer you get a bit of motivation you dive into a few tutorials you feel like you're making a lot of progress and then the next day you have no idea what you're supposed to be learning this is common don't feel bad if it's happening to you and that's why I'm making this video because I want to share with you four really good road maps that you can follow that not only are going to help you make a lot of progress but help you actually land a job now one of the important things when it comes to becoming a software engineer is to make sure you're going down a certain path it's very difficult to be employed as a software engineer if you just have very general skills if you just know a little bit of python a little bit of JavaScript you picked up a bit of git no one really needs someone that does just that pretty much all software Engineers have at least a little bit of skill in that area you need to pick what kind of area of software development you want to get into and that's what this video will help you with now before we get into the four road maps I do want to break down some core skills that all software Engineers have to have no matter what area you want to get into so let's start with those so to be a software engineer you obviously need to know how to program you need to know how to write basic code and probably even more advanced code and you need to understand all of those Core Concepts that I'm sure you've heard a lot of times functions if statements print statements conditions variables all that stuff you need to know it no matter what programming language or what you're going to end up doing as an engineer next you need to understand data structures and algorithms now as much as a lot of people like to complain that these aren't commonly used in your job they are a really core important part of kind of a computer science curriculum or becoming a software engineer and even though you may not be implementing a binary search or reversing a link list on your job the skills that you learn when you learn these topics carry over into a lot of other fields and being able to understand algorithm efficient space and time complexity how to write a better solution than another solution in comparing two pieces of code together is really really important and everyone needs to know it now the next core skill you need to learn is how to use your computer and specifically how to navigate the command line using bash commands now these can be other commands as well you can be learning specifically for Mac or Windows but you should be comfortable navigating the computer using the command line understanding commands like CD PWD MV RM CP if those commands mean nothing to you then you've got a little bit of work to do won't take you very long but you should just understand the basics of those now after that you're going to want to know git no matter what you do you're going to be using some kind of Version Control System most likely it's going to be git so you want to understand the get commands what repositories are how you push things to a remote repository work with multiple people these are things that again don't take a massive amount of time to learn but are really fundamental and you can't skip over now lastly you also want to learn about coding best practices what is the best way to write code what is the most efficient what is the cleanest what is the most maintainable and readable and how do you write code that other people are going to be working on not just code that's strictly for yourself once you've got those course skills down then it is really time to dial in on a road map in a specific area of software development and that's what we'll get into now now I have four road maps for you in this video the first is data science machine learning the second is frontend development the next is backend development and the last is mobile development now make no mistake there are hundreds of different road maps you can follow along with and I can't possibly put them all in this video but these four are very popular and the ones I see a lot of people having success with hence why we'll get into them so let's begin with data science and machine learning now you could also throw the term AI in here if you want working with llms Etc and yes there is a difference between AI machine learning and data science but at least when you're getting started most people are going to follow pretty much the exact same road map to build that core competence before they decide to specialize you know specifically in machine learning or data science or in things like Ai and llms so this road map will definitely do you well especially if you're just getting started and by the way if you are interested in learning more about AI data science machine learning Etc then today's sponsor data Camp is a great place to start whether you're a complete beginner or just looking to boost your skills to break into software development data Camp is an incredible resource you can start by taking an assessment to identify where you have gaps in your coding knowledge especially in Python SQL or R based on your results data Camp recommends relevant courses from over 500 options in data science and AI you'll develop your skills with a super Interactive Learning Experience through short videos and Hands-On exercises what I really like about data Camp is that you learn by doing exercises will require you to write code in the programming languages that you're learning and you'll build confidence by working on real life projects and once you're ready data Camp even off industry recognized certification programs whether you want to become a data analyst data scientist or data engineer data Camp certifications are a powerful asset to stand down in front of recruiters and help you land that First Data job faster check out the links in the description to get started and level up your coding skills with data camp and eventually become a certified data professional so let's get into the road map now the first thing you're going to want to know is python now you can learn a language like R you can even do this with Java for example or C++ but for most people their Best Bets going to be Python and that's going to be the lowest friction to get started now after that I do recommend having a solid foundation in mathematics and probability and statistics you don't need to have this in order to go through this field but it's definitely very helpful because a lot of the things you'll end up encountering have things like scientific notation they have all kinds of maybe calculus mathematics they're showing to you uh and things that I don't even understand because I didn't finish all of my math classes in University and the point is if you really want to have a deep understanding in this field yes you do need to know a bit of math and that's probably one of the only areas in machine learning where you do actually need to be decent at math so things like linear algebra Calculus 1 calculus 2 uh even things like discret mathematics can help you tremendously if you don't have them you can still get into this but those are topics you're probably going to want to learn about and you will end up being exposed to as you go through your research and learning process now once you've learned that you're going to get into Data pre-processing before you can start handing data off to machine learning models and Performing all of this analysis you need to pre-process it that could be using modules like pandas for example or numpy to change the data shape to collect the elements that you need to clean the data there's all kinds of different things that go into that next you're going to learn about machine learning algorithms specifically these core ones now I'm just going to read these from my notes so I don't get them wrong we have linear regression logistic regression decision trees random forests support Vector machines and K nearest neighbors but these are really the important fundamental algorithms that everything builds upon and it's important to understand how they work at a deeper level before you go much further next we have model evaluation once you've trained models you've learned about these core algorithms and you've pre-processed the data you need to know how to evaluate them for their performance so you can learn about things like cross validation Roc curves confusion matrices and there's other techniques as well that you can use to fine-tune your model's performance now after that you can start getting into into more complex techniques like neural networks you'll start by learning about the basic architecture of neural networks and then start looking at things like convolutional neural networks recurrent neural networks and more complex architecture for specific tasks now while you're learning about neural networks it's very likely that you're going to be touching Frameworks like caras P torch and tensor flow so keep those in mind as some important tools that you'll want to watch out for you don't need to know all of them but certain courses will favor for example pytorch or maybe tensor flow that's the one supported by Google next after that we have natural language processing this is a big area specifically now with things like llms so this is where I would learn about things like text pre-processing word embeddings and models like Birch or GPT which probably sound familiar to you now after that we have computer vision now computer vision is my favorite area in machine learning and AI because I just find it so cool and in this space you can use things like open CV and you can learn more about things like convolutional neural networks and how you use audio video uh you know photos and how you actually recognize things in the real world using AI which again I find really interesting after that you can start looking into reinforcement learning you can learn about things like Q learning agents environments how you have models kind of train themselves you can start looking into things like evolutionary algorithms and obviously at some point you are going to be looking at llms now realistically you won't build your own llms but you'll probably be learning about how they work and that's definitely useful okay so I know that was a lot of stuff so what I'm going to do now is give you a quick summary of things like the languages you can learn the libraries or Frameworks and the different tools now again if you see me referencing my other monitor it's just because I don't want to get these things wrong I have some notes okay so in terms of languages we have Python and R those are the primary languages for this category however sometimes you can do this in Java and C++ it's just not as common next we have things like psyit learn this is for kind of implementing those more basic machine learning algorithms we have things like tensorflow P torch car and then open CV nltk natural language toolkit and then lastly on my list I have Spacey in terms of kind of the Frameworks and libraries next in terms of some tools you'll end up probably learning along the way first is Jupiter notebooks now these are typically python notebooks that allow you to run interactive code very useful tool to learn very simple to learn and you can use them in vs code or in Cloud environments like Google collab next we have Google collab this is a kind of online environment where you can execute machine learning code against gpus and you can do this completely for free if you don't have a great hardware setup in your own you know desk computer whatever next we have some Cloud providers like Amazon web service Azure AI or Cloud AI from Google Now you can pick just one of these you don't need to learn all three of them but eventually you'll get to the point where you want to actually deploy your models and then you'll need to learn a bit about cloud services so that wraps it up for this category I know that was long but I want to give you a lot of information now let's get on to front-end development so we're diving into front front end development now before you can really become a front-end developer you do need to learn Three core things HTML CSS and JavaScript now these are three independent languages some people argue HTML is not a programming language that's fine markup language whatever you want to call it the point is you need to know these three things before you can really start doing any kind of substantial web development so learn the basics of HTML learn about the different elements learn about things like semantic HTML and the correct way to use different tags next learn about CSS you don't need to be a master but you need to know about things like layouts basic design properties and pretty much 90% of the CSS you'll use on a daily basis you can learn in about one hour again you might not be an expert in it but you don't need to know a massive amount to get started here next you do need to know JavaScript now this is where you really need to focus a lot of time because you're going to be writing tons of JavaScript or typescript code when you're doing front-end development that's really just how it is nowadays yes there is other languages you can use on the front end but typically it's going to be in JavaScript now once you've learned those three things it's time to get into a framework now in order to be a great front-end developer you need to be good in one of the three major Frameworks and that's react angular or view now you can pick which one you want to get into here personally I like react that's just the one that I use the most but you have all kinds of people online arguing about which one is the best if you want the most number of jobs that's probably going to be in react but if you want to be more specialized you can go and learn things like angular and view actually I recommend that you learn a little bit about all three before you make a decision anyways point is learn a bit of these three Frameworks pick one that you like and that you want to stick with and then follow the road map from this point forward so once you picked a framework the next thing you're going to be learning is obviously about that framework the inss in the outs all the details and then you're going to get into State Management now this becomes more and more important the larger the application becomes there's all kinds of Frameworks or libraries that can help you with State Management but regardless you want to learn about the native State Management ways so if you're in react things like the context API and then you potentially want to look outside of that at things like Redux for example they also have State Management libraries obviously for all of the other Frameworks the point is you need to get good at State Management uh and kind of understand how that impacts the performance of your application and how you design apps with state in mind so now that you've learned at least the core components of one of the Frameworks you've learned about State Management it's time to really dive into more complex web development Concepts so firstly things like responsive design now theoretically you could learn this before the Frameworks but I find it's nice to have a bit of experience in the framework first and then you can really see how this impacts what you're doing and what you're building so responsive design is how does your website scale from say a really huge screen to a really small screen like a smartphone does it work on multiple browsers that's kind of responsive design how does it change as you change the layout size and dynamics of the web page next you want to really focus on apis and how you interact with a apis now apis you're going to use all the time as a frontend developer this is the way that you're going to retrieve data or update data and it does involve learning a little bit about how the backend works so you can really truly appreciate what an API is and what your role is as a front-end developer in using it and interacting with it now after that you want to learn about things like accessibility so does your website work for people that are colorblind for example does it work for people that are using screen readers does the text scale is it larger for people that have that setting set in Google Chrome there's all kinds of weird accessibility features that a lot of people don't think about and definitely if you want to be a front-end developer you want to understand those Concepts and try to make your websites as accessible as possible next you're going to be looking at performance optimization so how do I make my web page as fast as possible is the way that I'm writing code the most efficient and scalable is there ways that I can handle the state that will result in less State updates for example this is where you get into more complex topics and you're focused more on kind of specific blocks of code and small techniques that you can use to really optimize the performance of your site so once you've learned all that now we move into what I'm calling the extras now these are other topics that you should learn but they kind of don't fall into a category like the ones did before so we have typescript now typescript is a programming language it's actually a super set of JavaScript and this adds type annotations and hints and static type checking to JavaScript you don't need to know what all of that means but the point is typescript is used everywhere and if you are a front developer you're going to be expected to to understand typescript fortunately it doesn't take that long to learn it and 95% of the typescript you write on a day-to-day basis can be learned in about an hour that's how I learned typescript I need to use it for a project I watched an hourlong tutorial I was pretty much good to go and just had to look up a few things when there was some more complex syntax after that we have testing now testing is an important role for software developers so you should learn about the difference between unit test integration test and endtoend testing or system tests whatever you want to call them and different testing Frameworks you can use based on the front-end code that you're writing next we have animations now I wouldn't say you need to be an expert here but you should understand basic CSS media queries and how you do some kind of more advanced things with your web page to almost show off or at least just make some more interactive and kind of engaging sites I find animations interesting I suck at them but something you should learn next we have nextjs now nextjs is serers side rendering this is kind of a whole different category I could do a whole nextjs road map for you but you should dabble in this look at it a little bit it's not like you need to start writing all of your code in nextjs but it is a topic you're going to want to be familiar with because it's gaining a lot of popularity and a lot of companies now are using nextjs in their code bases okay so that's that now we get into tools and workflows now you're going to want to learn about development tools so things like webpack Babble npm to manage things like your dependencies and then build processes so how do you actually build an application how do you go from writing it in JavaScript to rendering it on the web if you're going to be a front-end developer those are important topics to understand now you're also going to want to learn a little bit about devops how you actually deploy applications out you don't need to be an expert here but learning about things like Ci and CD pipelines how you set up automated testing for your applications how you do things like continuous integration and using applications like netfi verell that's a really popular one now or GitHub actions lastly you want to learn about some browser Dev tools now at some point you're going to have to learn these anyways but these are things like debugging Pro profiling and testing the performance of your application in the browser which obviously is where it's natively rendered so now we're moving on to backend development now backend development is one of those fields where there's many different valid paths and ways to do backend development now here just to narrow the scope a bit I'm talking specifically about about backend web development story but you could be a backend developer working on for example internal tools it doesn't just need to be web development but that is one of the more popular categories okay so the first thing you need to do if you want to become a backend developer is identify what language you want to primarily write code in now there's a lot of different options here I'm going to give them to you and you might just want to pick the one that you're most comfortable with if you've already learned one if not I'll give you some recommendations but let's go through the options so we have nodejs or JavaScript right so if you're writing code in JavaScript for backend you're typically going to be working with node and something like the Express framework then we have python this is personally what I use and then you're going to be working with something like d Jango or flask or fast API and then we have Ruby obviously you'll be working with something like rails then we have Java this is a very popular option because a lot of more Legacy code bases are written in Java and they need people to maintain that then we have net so we're talking about things like C asp.net we have go obviously a more modern language personally one of my favorites other than Python and then of course we have all kinds of other languages rust C++ Etc but the six that I listed are some of the more popular ones when it comes to backend web devel vment now truthfully you can go into any of these languages if for some reason you like a language better than another then go ahead and pick that but I would recommend looking at different job postings for companies you might want to work for and seeing which ones are listing Which languages and then focusing in on that one of the best ways to develop a road map is to go and look at what companies actually want see all of those different resources tools languages libraries that they're listing and then make a note of those kind of cross reference them against other applications and see which ones are popping up the most but obviously I'm going to help give you a shortcut in this video okay so ideally you picked one of those languages or kind of ecosystems of backend development and now what we need to do is learn some Concepts that are going to apply to pretty much all backend developers now the first is a database management system now this could be a SQL database something like postris or MySQL or it could be a nosql database like mongod DB even something like Firebase that could work as well but ideally you're going to learn both so a SQL database and a nosql database and understand how to do things like structure queries how databases actually work the difference between SQL and no SQL these are just core important Concepts that all back and developers should know next you need to learn about apis specifically rest apis and how apis work and what they are what are the different request methods how do you make an API and then look into things for example like graphql kind of a way of making apis and querying different data sources after that you're going to want to start looking at authentication having apis are great building backend services are great but you need to authenticate them so learning about things like JWT tokens other token based authentication mechanisms usernames and password basic cryptography how you store passwords securely and what authentication looks like and how you perform it which can be drastically different depending on the type of framework you're working in now after authentication I'd recommend looking into testing so how do you do again unit testing integration testing end to- end testing of your backend systems and then you're going to probably be looking at caching so looking at tools like re's for example to increase the performance of your applications after that you might want to even look at things like message cues and different design patterns you can use on your back end there really is a lot of stuff that you can cover here I'm kind of giving you some more General broad terms because it is difficult and it depends on the specific kind of language or ecosystem you get into but hopefully this gives you at least a little bit of guidance now after that there is a bunch of other skills that I would recommend learning you don't necessarily need to know all of them but I'm going to give you a list uh in case you'd like to see them so first we have devops now as a backend developer I'd recommend learning about things like Docker kubernetes and continuous integration and deployment so same thing kind of on the front end you want to learn how to deploy your applications how to use containers like Docker how you can set up kubernetes clusters and kind of how that works in terms of spinning up different pods and services and then things like Ci and CD so this is GitHub actions automated testing automated deployment again you don't need to know all of this especially as a complete beginner but it's good to at least know a little bit about it so that if it does come up or those terms are thrown around you're not completely lost next we get into Cloud platforms so things like AWS Google Cloud Azure other Cloud providers you're going to want to know at least one of them in terms of how you deploy applications and interact with them and then we start getting into various architectures when it comes to backend development backend development requires a lot more kind of I'd say maybe strategic thinking critical thinking architecture decisions because you're working on kind of the performance side of code if the front end is a little bit laggy that's okay you know people can deal with that um the data is still integral it still works everything's secure on the back end things are a lot more critical so everything you do has kind of a higher impact on an organization as opposed to you know a fancy front end where the animation doesn't work right what's more of an issue if the database goes down or if the you know frontend website is you know a little bit broken right the database obviously is a bigger issue so this is where I would start looking into things like serverless architecture so serverless Cloud functions for example and then things like microservice architecture this is creating a bunch of small Services rather than kind of a monolithic application and then we of course get into things like monitoring and logging okay I have this great application it's deployed how do I see if it's actually working how do I check the latency and the speeds how do I monitor that and log that I maybe share that information with other team members there is a lot of stuff when it comes to backend development but that is kind of a gist of some core competencies and skills you'll want to learn so now we move on to mobile app development now this is a bit more of a niche field sure it's still very popular many people know about it but a lot of developers don't ever learn any mobile app development so I find a lot of the roles for that aren't nearly as competitive as something like a front-end developer or a back-end developer because you just have less qualified candidates now you also have less roles but I think this is definitely something worth considering and the nice thing about being a mobile app developer is once you learn this you can build your own applications you can very easily start up your own company by having these skills which which is actually something that I did recently so I was working as a mobile app developer for about 2 years for a tech startup uh I did this with a team about four other software Engineers where I was the lead engineer there so I have a bit of experience in this field our app didn't end up ping out but it was definitely a great learning experience and I'll kind of share with you the road map and some things I learned along the way so you have a lot of options when it comes to mobile app development but you want to probably pick whether you want to make apps for iOS or Android now we also have crossplatform app development using Frameworks like react native for example but in my experience it is significantly easier to build applications when you build them natively for the platform so when I worked as a mobile app developer I worked in react native this meant I could just take my existing react skills and JavaScript skills and then build apps that worked on both Android and iOS but what I found is that it was very difficult to get things to work flawlessly on both operating systems and even though we eventually did that I always was thinking in the back of my head it would just be easier to have two separate Cod bases here that shared for example a back end rather than trying to build one thing that worked everywhere because once an app starts getting complex there's just a lot of things that are different on IOS and Android and it's a little bit of a nightmare and your app just doesn't run as smooth or um kind of fast or quick or nicely as it does when you build it natively anyways that kind of is the first option if you know react if you know JavaScript and you want to start building mobile apps really quickly using react native is a great option but when it starts getting really large it's a bit of a nightmare so I'm just giving you a warning right now now the next options here are to build in iOS or Android so if you're building with iOS you pretty much need to use xcode even if you're using something like react native you're going to be using xcode for parts of that and you're probably going to want to learn Swift swift is the newer more modern language for building mobile apps I mean it's pretty old now but it was new at some point previously it was Objective C at some point you might come across some objective c code but generally you can learn the Swift programming language you can learn xcode which is its own kind of language its own environment to mess with and then you can start building iOS apps iPad apps pretty much anything in that uh Apple ecosystem next we have Android Now Android I would say is a lot easier to build on especially when you're getting started and for this you can learn cotlin or you can learn Java now with this you're going to be working within Android studio and you can again build out mobile applications in either of those two languages and it is significantly easier just easier to test everything has a lot less friction when you do Android so anyways kind of pick do you want to do iOS do you want to do Android want to do both and then select out of those languages and kind of the editors or Frameworks that I mentioned now before we go any further I will mention there are some other crossplatform options so for example we had flutter that uses the dart programming language next we have things like zamon Studio you may have seen this before allows you to build mobile apps in C again this is okay but I would personally just recommend if you want to be a mobile app developer build it in a native language uh just going to be a lot easier than trying to use it in C C or react native or JavaScript or whatever you want to use okay now once you picked what you want to learn you're going to need to learn the ecosystem within that platform mobile app development is a lot more complex in my opinion than developing on the web because there's just a lot of new things to learn and you're dealing with kind of native components so for example on iOS you're dealing with you know the weird like interactive thing that's shrinking now what is it called the floating touch bar at the top where the notch used to be like just things like that an update comes out all of a sudden the iOS is different and the gestures are different so you're just dealing with you know something you don't really have that much control over whereas a web browser is quite simple it's just this kind of 2D static environment that you're writing code in uh in mobile app development you're dealing with all of the hardware components and software components of the mobile phone that you're on so for example if you're writing code for Apple right an iOS device you also have to make sure your code is compliant so you have to go through a review process you're going to need to learn about okay what does it take to actually deploy an iOS application what does the review process look like how do I get logs back from this application um what are different packages I'm even able to install that work with iOS so that's what I mean by the ecosystem with Android Studio it's a lot easier but you're deploying to for example the Google Play store so you want to learn about how that works what is the deployment process how do I actually get my app here what devices is this compatible on what SDK versions does this work for there's a lot of um kind of mobile specific topics that you're going to end up learning in this journey now other than that you're obviously going to need to focus on things like responsive design user interface design building things specifically for mobile for example certain touch areas are kind of a noggo based on where users thumbs can be placed so there's a lot of kind of learning curves there now beyond that this is just building the front end right like if I build a front end in uh you know xcode using Swift I still have some back end I need to connect it to some kind of database so you are also probably going to need to learn a bit about backend development if you wanted to be a full Stack mobile app developer if you're just building the front end and the app that's one thing but the back end is also another component so you need to think about okay where is my data stored how do I access the data and that's where you can get even back into the back-end developer roadmap so long story short mobile app development in my opinion is more complicated I think it's definitely worth getting into and it's very rewarding when you learn it and you can build out some really cool stuff but you are dealing with a lot more complexity in kind of moving parts and factors compared to building web applications anyways that's kind of a simple road map I know it was more just information than it was you know learn this this this it just because the platforms are so different and it's very difficult to give a step-by-step road map because it really depends on what you want to do so with that said guys that's going to wrap up this video it ended up being a lot longer than I was expecting but again I always try to give you as much information as I can so I hope you found this valuable and if you did just leave a comment right now and let me know what road map you plan on pursuing or if it's completely different or if you have any feedback for me or kind of a road map that you might suggest anyways I hope you guys enjoyed and I will see you in the next one [Music]
2024-10-10 13:12