How I would learn to code (If I could start over)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
this is how i would learn to code if i could start over for context i work at microsoft but before that i did six internships across three countries so yeah i've done a line or two in my life wait not like that what the to tell you what i would change i first need to tell you what i did i started coding in grade 11. well sorta we started with this language called scratch it's basic game development made for children nobody would be stupid enough to let's say do an entire google coding interview in this language and maybe even do shots every time the code fails so let's just skip that and get to the important stuff i went to waterloo and in order i learned first racket then c c plus plus html css tcl python java javascript c sharp some of these were in class some are on their own here's the motivation behind each racket for recursion c for memory management c plus plus for object oriented design html and css for web development although these are not real programming languages or markup languages tcl i did an internship and it's useless python i learned this alone and over time but mostly just for side projects java and javascript for back-end and front-end web development and finally c-sharp which i do for my full-time job now but it's essentially microsoft's version of java so let's not talk about it c and c-plus plus are by far the most useful languages to learn after i learned those i realized most other programming languages are essentially just derivatives of those each new programming language essentially takes those and makes some specific tasks easier basically all these languages share the same ancestor and c and c so clearly you should start by learning these two languages right no these languages are pretty intensive if you want to do anything like useful or impactful it either requires one a lot of code or two use of a bunch of libraries that you've never heard of before and honestly are probably not worth learning which brings me to my point you need to do something useful but not too useful now hear me out if you're learning c it's going to be relatively easy to start solving some basic math problem and you'll print the solution on the screen but all of your code is contained to this little terminal if you want to make a graphical game or connect to a website or do anything quote-unquote useful it'll actually be really hard like even for me right now i i would have to do a lot of googling to even figure out how to do those things essentially if you start with c anything useful is going to be too hard and this will be really demotivating now let's look at the opposite end of the spectrum many students want to get into coding and the first thing they want to do is learn machine learning here's the thing machine learning is super useful in the real world but it's all advanced math so if you start with it you're going to be learning one computer science basics two python for example and three advanced math topics all at the same time and unless you are literally a genie you're gonna come out of that not really knowing any of the three the sweet spot is somewhere in the middle you need to do something that's useful but not too useful now we're talking about doing useful things let's clear up the distinction between coding and programming coding is just writing code to solve computer science problems let's call them math problems to show the distinction this is what you need as a prerequisite to learn how to program programming is the ultimate goal programming is the act of using coding to make programs that solve real problems you need to learn the fundamentals of coding to know how to program remember when i talked about people starting at machine learning this is trying to program before you know how to code and people only solving math problems in c is knowing how to code and never using that to program there are tons of tools use cases frameworks that surround each coding language but in the beginning you kind of need to isolate the coding language itself learn the basics of that and then you can take it and learn how to program with it the easiest thing to start with is probably python but honestly i wouldn't be upset if you picked a javascript and i'll explain later python mostly looks like plain english even if you don't know how to code you can sort of read it it's super easy to get started in you can immediately start learning the basics like variables functions move quickly into data structures and algorithms you'll really want to know the basics about types like arrays and the basics of control flow like functions loops and even a little bit about classes don't get carried away you don't need to learn advanced things like inheritance for example if you're feeling a little feisty you might want to learn exceptions hash maps maybe sprinkle in a little recursion now there are plenty of intro to python courses in the world so i'm not going to bore you with the details i'm sure you can find that on your own but now that you have a coding language down let's talk about programming so the first thing i would do is take what i've learned and build a website now there are three important aspects to a website there's the back end which kind of manages user data there's the front end which is what runs on the user's browser and then there's the database which essentially just stores data now we'll start with back-end you're going to want to pick a pretty high-level language either one python or two javascript the first program i would build would be a basic website now what type of website what does that website do well i'll explain that in a minute but for now let's just make a project in that language now when making a backend you're going to learn concepts like http methods get post for example depending on the project you might be interacting with a database once you start to feel comfortable and have your basic back end working then let's try our hand at the front end now on the front end you're going to be using things like javascript html css this is the reason i say javascript is actually a pretty good starting language because you can use it for the backend and the front end now i said each programming language has a bunch of tools and frameworks that make it easier to use basically there's no reason for you to write code that somebody else has already written the frameworks i would use for these languages would be python i would try either django or flask javascript on the backend i would use express.js which just think of it as simplifiednodejs and on the frontend i would use react and if you need a database i would try mongodb now anecdotally i can tell you for python i've seen more jobs listed for django than for flask and i've seen more express js jobs over django on the front end i think react is pretty solid after that time you should learn c and c plus as it'll teach you everything you need to know to learn any other programming language i love this method because you start learning the practical and marketable stuff immediately but then you start preparing yourself for the long term necessities this keeps your motivation higher and it really just makes you marketable quicker now what website should i build think back to useful but not too useful this doesn't need to be very complicated in fact it really shouldn't be complicated at all there's going to be a lot of new ideas and concepts thrown at you if you try to build the next tinder or the next instagram you're gonna end up with no product no learnings and no motivation now before i give some concrete examples and i will let's talk about what makes project good in an abstract sense it's always best to create things that you actually find useful i'll give you an example of one of my first side projects so i created this thing called spotify to youtube mp3 in university i had a trial of spotify and when it ran out i was too cheap to buy spotify i didn't have any money but i had 400 plus songs in my playlist i didn't want to lose all that so i created a python program that uses the spotify api to get those songs and then youtube's api to download the mp3 version now i had all the same music but for free this project was one of the few that i actually finished and it's one of the few employers loved asking about why well one because it's unique but two because i actually used it i built it for myself other projects i would start and then i would lose motivation and i would never finish think a little about some problem that you have in your life that would be nice to know like maybe it's uh just knowing when your favorite beer is on sale or maybe it's an online clipboard so you don't have to keep messaging yourself random on facebook messenger all the time it doesn't have to be relevant for everyone it really just has to be relevant for you now if you don't have an idea yet don't panic i have a solution for that you're allowed to follow a tutorial on youtube or udemy or any of those sites but you're not allowed to build the same website as them for example if you're following a tutorial on how to build a weather website instead try building something like a currency converter that's a real example that i did what's great about that is most of the code and the concepts are going to be the exact same but it restricts you from being able to copy and paste the solution therefore you can follow the tutorial but you can't copy it now moving back to c c plus plus for a second the best and most popular languages and frameworks are always going to change they're changing as we speak right now don't underestimate those fundamentals you've learned in c and c plus because ultimately if you know those well most other languages are just going to be some subset of those languages also know you're going to experience the dunning-kruger effect this curve shows when somebody's learning a new skill at the beginning they tend to be overconfident in their abilities when they start to learn more they see they actually have so much to learn they quickly lose all their confidence and it takes them a while to build it back up bear in mind you're going to go through this process you're supposed to feel like you're not good enough you're supposed to feel like you're not smart enough for this but trust me if i can do it then you can do it one important resource is hackathons it's weird to be at a hackathon in the first place but it's cool to see all this hackathons are scary because you'll go not knowing much but people will expose you to things you didn't know you didn't know they'll help you build and complete an entire project in 48 hours they're also just really fun even if the food is actually terrible every single time now don't forget this comes after you learn the basics of coding don't try to program before you know how to code and don't waste all of your time coding and not programming subscribe smash the like button and go break some eggs
Info
Channel: Jason Goodison
Views: 1,862,803
Rating: undefined out of 5
Keywords: software engineer, programming, software engineering, new grad software engineer, fintech, computer science, big tech, day in the life of a software engineer, nicholas t, pirate king, joma, mayuko, frying pan, namanh kapur, jason goodison, software developer, faang internship, internship, interview, data structures, leetcode, microsoft recruiting, internships, learn to code, python, learn to code for beginners, how to learn to code, how to learn programming, pooja dutt, cs jackie
Id: 9s29LKfEFjQ
Channel Id: undefined
Length: 9min 16sec (556 seconds)
Published: Wed Jun 29 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.