What Self-Taught Developers NEVER Learn

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] hello everybody and welcome to another youtube video so in today's video i'm going to share with you some topics that self-taught developers most likely will never learn and when i say self-taught developer i'm really talking about someone who hasn't gone through the traditional school system and just give you a bit of context here i myself have done two and a half years of a computer science degree i've done most of the mandatory computer science courses and i'm aware of the courses that i'm gonna have to take in the future if i continue my computer science degree and i'm also pretty much self-taught with a lot of the other development skills that i have i started to learn to program well before i was in university and a lot of what i know i didn't learn in university so i gotta have a decent perspective here as someone who's been through school but also teaches themselves a lot of programming anyways with that said i will lastly mention here that there is a reason why a lot of developers don't learn these topics again i'm not trying to say you need to code and learn them a lot of them are relatively useful in a real job environment however i believe it's important to be aware of some gaps in your knowledge and hopefully this video will just show you some things that maybe you haven't considered before and you might want to learn anyways let's go ahead and get started after quick word from our sponsor before we get started i need to thank the sponsor of this video which is alco expert algo expert is the best platform to use for preparing for your software engineering coding interviews and has the highest quality coding interview practice questions with 160 practice questions detailed solutions in nine of the most popular programming languages a feature-packed browser-based coding environment extensive test suites and conceptual overviews and code walkthroughs for each and every problem algo expert is the best resource to use to ace your coding interviews algo expert also has a data structures crash course coding interview assessments and a mock interviews feature i can highly recommend algo expert as a former customer myself and now an official instructor on the platform get started using algo expert today by clicking the link in the description and using the code tech with tim for a discount on the platform all right so let's go ahead and dive in now the first thing i'm going to clarify here is that a lot of the main topics i'm going to bring up are just the names of university courses that i've taken so what i've kind of done is gone and looked through all of the courses that i've taken and that i need to take in the future and thought about if i was a self-taught developer if i would have learned that content or even like a subset of that content so if it was a course where this is something pretty important and most developers already know this i obviously didn't include it here but if it's something like say math then i probably put it in this list because that's something that as a self-taught developer is not super important not a real practical skill and you don't really necessarily need to learn that to get a job anyways let's dive into topic number one that self-taught developers most likely will never learn and that is advanced mathematics and proofs now when i say advanced mathematics i'm really talking about university level mathematics and i'll go through kind of the main courses that i'm talking about here so the first one this is pretty obvious but calculus so personally in university i had to do calculus 1 and calculus 2. these were actually pretty difficult courses so in these courses pretty much what we learned was integrals derivatives and a few applications of integrals and derivatives i haven't found these super useful in computing in fact the only time i've ever had to use any of that knowledge is when i was looking at some advanced machine learning kind of explanations so the math behind some machine learning models or machine learning techniques or artificial intelligence related stuff but other than that i've had pretty much no use for calculus in my life since then anyways moving on the next course that i'm kind of grouping in this advanced mathematics and proof section is going to be linear algebra now this is actually one that i would say is pretty important not simply because of the content that it teaches but because of the way it allows you to kind of think about math so linear algebra is a much different type of math than something like calculus or algebra in general like regular algebra with linear algebra you're doing three-dimensional math you're working with matrices you're working with vector spaces and just a very abstract field of math that i know to a lot of people who are in my course was very new and for me again i didn't find it crazy useful in my experience writing code or being a software engineer but it did help me kind of think about math and problems in a different way and that's why i found some value in it moving on the next two courses are ones that i actually hadn't even heard of until i went into university and this is discrete structures and discrete mathematics now discrete mathematics is kind of the first course and discrete structures is the second course and what you learn in this is actually very computer science relevant math so you're learning about proofs for specific algorithms you're learning about things like permutations combinations graph theory set theory modular arithmetic and really a lot of the underlying math behind a lot of the principles in programming languages that you're using and behind a lot of very famous algorithms that solve problems so these courses i actually found super useful i wish i could recite more of what i learned in them but i'd recommend that if you haven't heard of discrete mathematics or discrete structures go and give it a google search look at some you know syllabus or curriculum for it and just see all of the topics that it covers because they're pretty interesting and one of the cool things that's taught in these courses is actually how you prove the correctness of algorithms so how do you say that my algorithm 100 is going to be correct on any input and how do you do that using math that was probably the most interesting aspect also the most difficult aspect of this course all right so with that that pretty much wraps up this first section which is advanced mathematics and proofs again the reason i put it here is because why in the world would you go learn this unless you had to learn it or you're just a math geek i know i'm not and if i wasn't in school there's no chance i would have learned any of this on my free time alright so moving on to the next topic here i have digital systems and computer architecture now these were two separate courses that i took in university but i'm kind of clumping them together because digital systems was first and then computer architecture was second and what was taught in these courses was really how computer hardware works on a much lower level and specifically how a processor actually works so how you take say two numbers and add them in a computer so not like okay how do we look at two numbers and add them but how do wires and circuits in electricity actually allow you to perform computations now to me i found that super fascinating because i'm someone who's really into building computers and i like the hardware aspect as much as i like the software aspect and so to actually kind of get an insight into the lower level and be like oh this is how you know the memory of a computer is managed this is how i access some data that's had a specific memory address this is what machine code looks like and this is how i take you know some commands and actually run them on an apu or a cpu that was really really fascinating so other things we learned in these courses was uh the different gates that you would use in a digital system so an and gate and or gate a nor gate we learned about boolean algebra so how you simplify boolean expressions and a ton of other stuff it's been a long time since i've taken those courses these were very difficult courses it's probably some of the hardest courses that i had to take but the knowledge that i learned in them was really valuable and i'm actually really glad that i got to take them because even though they were a pain in the ass back then right now i feel like i have a much much better understanding of how a computer works as a whole not just at the software in the code level but actually on the lower level hardware level which is something that i like alright so moving on to the next topic we have programming paradigms now programming paradigms refers to the different styles of programming and every programming language that you write in implements specific programming paradigms so for example a language like java this is an object oriented programming language that's its paradigm it implements that whereas a language like python implements both functional programming and object-oriented programming and i think it implements something else as well but those are the two ones that i know for sure that it implements anyways the point is the most developers only ever learn a few programming languages and most of those programming languages are the same paradigm so if you're learning languages like java javascript python c plus plus but these all fit into kind of the similar or same paradigm and you're writing code in a very similar style the way you solve a problem in python is very similar to the way you solve it in java the only difference is the syntax might change a bit there might be a few language features that kind of differ across the problems that you're solving point being there's a bunch of other programming language paradigms as well that most programmers never look at for example imperative logical procedural there's a bunch of other ones i can't remember off of the top of my head but the way you write code in these languages is completely different from the way you write them in your kind of traditional modern languages now do you really need to know these paradigms probably not they're probably not going to be useful to you in your job but for me when i had to write code and say an imperative style i actually became a better programmer because i had to stop relying on a lot of the kind of language features i had in a language like python and really think hard about how i'm going to use the bare minimum amount of features to solve this problem for example i had to work in a language called ocaml now i'm not very knowledgeable on ocam it's just what i did in the course but when we were in the course we were never introduced to a loop so there's no for loop or while loop or anything like that if we wanted to loop over something we need to use recursion so we had to have a recursive function if we just wanted to say look at every element of a list we had all kinds of nested functions higher order functions and all kinds of crazy random stuff i'm actually going to talk about in the next section but the point is go and look up programming paradigms and look at some of the paradigms you've never seen before and just have a look at those languages because they're very cool and if you can learn even just a tiny bit of a different paradigm in my opinion it makes you a better programmer and gives you kind of an appreciation for a lot of the features that you might use in your modern programming language that you just you know assume are always going to be there anyways let's move on to the next topic alright so moving on to the next topic i have programming language concepts now this was a specific course that i took in university as well this is the one that i had to write o camel code in as i was mentioning in the previous section and in this course we learned some very advanced programming language concepts and when i say that i literally am talking about the different ways in which programming languages are implemented how you know memory is handled how execution occurs in a language and a lot of very low level things also how to create you know multiple threads distributed programming multi-processing multi-threading a lot of stuff like that was taught in this course and one of the cooler things that we learned was higher order programming and higher order functions which means having you know a bunch of nested functions inside of each other we're having a function that returns another function and then we're talking about things like closures and i'm just rattling off a ton of things that i remember learning in this course the point being this course actually taught us about the design of a programming language as a whole and how you pick what features should be in a programming language and what kind of pros and cons you get or what you know advantages and drawbacks you get from different implementations of programming language features so i feel like i'm just completely rambling in this section again i don't remember a ton of this stuff i learned this a while ago but this was something that i learned in university that i thought was useful and worth a mention in this video anyways let's move on to the next topic alright so the next and last topic i have on my list for you here is operating systems now when i say operating systems i'm not just talking about you know linux mac windows that's not what i'm referring to i'm referring to how operating systems actually work on a lower level now full disclosure this is a course that i have not taken i actually stopped school i'm kind of on a break right now from school i may or may not go back that's a that's a different video point being this of course i haven't taken so i just went and read kind of like the syllabus for this course and picked out some of the key points that i could discuss them with you because this is something that i really know nothing about anyways operating system something that most self-taught developers including myself probably will never learn so when i say that i'm talking about things like process management process scheduling concurrency cpu scheduling memory management virtual memory mask storage systems file systems input output devices how does an operating system work with all of this stuff what actually is an operating system how do you build a basic operating system those are all things that to my knowledge are taught in this course and i'm not going to elaborate on them more because i really don't know what i'm talking about in this section point being most self-taught developers don't learn this so that said i actually am going to end the video here i hope that this was somewhat insightful and at least maybe gave you some topics to consider learning personally i find learning anything like this is going to give you some value you know you can question how much value it is and if you should learn it or not but for me i don't regret taking any of these courses even though at the time they were a lot of work and a pain in the ass as i said previously but now after taking them i do have an appreciation for all the stuff that was taught there and i'm grateful that i was able to have the opportunity to learn them anyways i hope you guys enjoyed the video if you did make sure to leave a like subscribe to the channel and i will see you in another one [Music] you
Info
Channel: Tech With Tim
Views: 147,469
Rating: undefined out of 5
Keywords: tech with tim, self-taught developer, university courses, school system, advanced math, proofs, digital systems, computer architecture, programming paradigms, programming language concepts, operating systems, developer, intergals, vector spaces, combinations, machine code, circuit design, functional, object oriented, design space, execution order, process management, cpu scheduling, mass storage systems, cpu and apu designs, procedural, memory management, modular arithmetic
Id: C64HXRU3GuQ
Channel Id: undefined
Length: 13min 23sec (803 seconds)
Published: Wed Sep 15 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.