look at all this math you need to learn in order to become a software engineer and there's so many Technologies and programming languages that it feels like you'll need your whole life in order to catch up and then on top of that you'll see all these teenage prodigies coding 10 times faster than you and it just makes you feel dumb for context I've been a software engineer at a Fang company for almost four years now and I've gain quite a lot of confidence on my skills but it wasn't always like that at first I actually
struggled quite a lot to learn programming but that was until I learned these five lessons that I'm going to be sharing with you today in this video the first lesson I'm going to teach you is learn by doing the reason why people struggle to learn how to code is the same reason why people are bad at math people are just too lazy to practice problems and power through adversity instead they will look for shortcuts that will get them the job done without really taking the time to practice I see so many people online complaining about
how much time they spend learning how to code and then when you ask them to show you their code they haven't written a single line they just spent countless hours watching YouTube videos without actually putting in the Reps the same way you wouldn't expect to learn how to play the piano by just watching YouTube videos you can't expect the same for programming you won't learn how to code unless you actually code a lot so my advice to you is to first pick something that you want to build let's say a website and then figure out
which Technologies you need to learn in order to build that website and then once you've built the website you will have learn a ton more than if you just sat on your desk all day watching YouTube videos and on top of that you will have a piece of software that actually works and that you can add into your portfolio the second lesson that I'm going to teach you is learn to program not a programming language this is a very common misconception especially beginners often confuse learning a programming language that is syntax and grammar with learning
to program which is the actual difficult part sure in order to be able to program you will need both programming language and knowing how to program but if initially you just focus on learning the syntax you will be just memorizing and you won't be actually understanding the underlying concepts of how to program and memorizing and programming don't go well together so don't do that it doesn't really make sense to memorize an algorithm in a certain programming language algorithms need to be understood in a conceptual abstract level completely independent from the programming language so let's say
I have this code snippet I'm just iterating through an array the actual code is secondary I only need to know that I need a way to access each and every element in the array how exactly I do that depends on the language implementation so it doesn't really matter in which programming Lang language I wrote this code I could do this exact thing in every other language so what you need to internalize is the concept of going through an array not just the actual syntax of how to do that this abstract or conceptual learning becomes even
more important when you start learning data structures and algorithms it's hardly ever necessary to be able to recite the implementation of an algorithm in a particular programming language but it's very important to understand the algorithm on a conceptual level so you can then implement it in any given even language that's why most tech companies will let you do your interview in any language that you want because the important thing is not the syntax but the actual underlying Concepts the third lesson that I'm going to give you is to create a road map for yourself as
beginners many people just search python on YouTube and start mindlessly watching YouTube videos just because they heard that python is popular so I'm going to Learn Python no that is not the way to approach this there are so many programming languages there are so many technologies that you can learn the first question that you need to clarify is what do you want to build once you figure that out you can work backwards to understand what are the Technologies and programming languages that you need in order to build this thing so for example if you want
to build a website you will need to learn about frontend Technologies like CSS HTML and JavaScript by getting Clarity on the things that you want to build you'll be able to create a road map that Suites your goals and it's not just mindlessly learning anything that's out there luckily online there's plenty of free and paid resources that you can use in order to get started on your software engineering Journey I've done quite a lot of research to find a course that I can confidently recommend you and the best one that I've seen so far is
the software development course by course careers this includes everything you need to know in order to go from zero coding knowledge to finding your first job as a software engineer the course is built in a way that will actually help you to learn how to code by providing you practice problems to solve for every lesson and real life projects that will help you stand out in your job application the way it's structured is in two parts the fundamentals scores that will teach you the core programming Concepts and then you'll pick one out of three specializations
in front end backend or devops the specialization is actually included in the prize so you don't need to pay extra for that the course is great if you're just starting out or if you already have some knowledge and want to specialize in one of the core branches at course careers they also provide coaching along the way and they give you feedback on your code so they really guide you throughout your journey and what's really cool is that the course actually starts with a free module so check out the link in the Des description to watch
the first module completely for free and I'm sure you'll get tons of value even if you don't end up buying the course however if you decide to make this investment in your career with the link below you'll get a $50 discount of the course now my fourth lesson is to prioritize understanding over everything this is probably the simplest yet the most important advice that I can give you in this video you have to take the time to understand what you're doing let's say you're coding and all of the sudden you get this error and you
don't know what it means you go on Google you search it the first link takes you to stack Overflow you copy the solution you pasted it works but you have no idea why it works does that bring a bell this situation can never happen to you when you're coding and something works but you don't actually know why it works you need to make it a point to take time to understand some of you might say Okay Elsa but I'm just getting started with programming if I start to understand every single thing it will take me
forever to learn how to code but think about it this way if you don't take the time to understand this problem to day whenever you face it again it will take you the same time to solve the problem whereas if you take the time to understand this now you will never face the problem again and you can move on to bigger and more difficult problems and that's the only way you have to grow this is the best time investment that you can make as a programmer for your growth some of the best ways that you
can learn is by searching on Google obviously but the best place that you can reference is always the documentation the official documentation of that programming language it's super detailed and way more accurate than any short answer on stack Overflow then if you don't seem to find the answer online just make sure to ask your colleagues your friends your senior Engineers don't be afraid to reach out to people and looking dumb because everyone has gone through this and then if you're working on a very difficult problem that is very Niche and no one seems to have
the answer to it you can always ask online you can write a new post on stack Overflow and if you had that question probably someone else is going to bump into the same issue in the future so by asking the question and stock overflow you'll help people in the future to solve the problem way faster last but not least the fifth lesson that I want to teach you is get used to failing learning as a concept is simple but it's not easy in practice when you win you don't learn anything it's only when you lose
that you actually learn something new therefore if you don't fail at all you won't learn anything at all myself at work I fail every single day I face new issues and I overcome them and that's when I grow if I didn't take the time to learn from my mistakes and face adversity I wouldn't be growing at all so basically in order to become a good software engineer you not only need to get comfortable with failing but you actually need to seek failure for me whenever I'm at work and I notice some tasks that I'm low-key
scared to take or that I'm not sure how to approach I force myself to take that task and face that so I can grow from it even though it might seem scary at first I end up learning so much more than if I didn't take it and now I'm way more equipped to face new problems and more diff challenges I feel like this image from strange Planet sums it up pretty well no discomfort no expansion so these are the five lessons that helped me become a better programmer so I hope that they are helpful to
you as well if you're just starting out on your journey remember to check out the software development course by course careers and you'll find a $50 discount in the description down below as always thanks for watching and I will see you in the next one [Music]