How to Successfully Learn to Code and Become a Software Developer - A Step-by-Step Framework | Tuomas Kivioja | Skillshare

Playback Speed

  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

How to Successfully Learn to Code and Become a Software Developer - A Step-by-Step Framework

teacher avatar Tuomas Kivioja

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

13 Lessons (58m)
    • 1. Class Intro

    • 2. Am I Smart Enough to Learn to Code?

    • 3. The Learning to Code Equation

    • 4. Start with Why

    • 5. How to Be Motivated to Learn to Code

    • 6. How to Stop Wasting Time

    • 7. How your Brain Actually Learns

    • 8. Part 2 Intro

    • 9. 9. Which Programming Language Should I Learn?

    • 10. Which Coding Courses Should I Choose?

    • 11. What Coding Projects Should I Build?

    • 12. How to Get a Job

    • 13. THANK YOU - The Next Step in Your Coding Journey

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.





About This Class

In this class, you'll learn everything you need to get started with learning to code as an absolute beginner.

Most people think that learning to code is too hard for them, that doing it successfully requires some wizard maths skills or 200 IQ. None of this is true.

I am someone who taught myself to code online from completely scratch with no formal computer science education and managed to also get a job as a software engineer at a large company in London.

From my experience I learned a lot of things I wish I had done differently when I started that could have allowed me to save a lot of time and headache focusing on the wrong things.

And whenever I browse online coding forums or read comments on my Youtube videos, I keep seeing many questions and doubts that hold people back from being able to successfully learn to code.

The purpose of this class is to give you a step-by-step framework that you can follow from first getting started, including choosing the right language, all the way to being ready to apply for full-time positions at tech companies and then being able to pass those coding interviews by having the right strategies and mindsets.

What you will learn:

  1. What is the best programming language to learn as a beginner
  2. An easy-to-understand framework - what I call the "Learning to Code Equation" to avoid the mistakes most people make when they learn to code
  3. All my principles that I used to learn to code effectively in just 4 months
  4. What are the projects that will make your resume stand out
  5. How to prepare for & pass coding interviews
  6. And much more!

All Resources Mentioned:

  • Deep Work (book) -
  • Python for Everybody (course) -
  • the Odin Project (course) -
  • FreeCodeCamp (course/platform) -
  • CS50, Harvard University (course) -
  • My review of CS50 (video) -
  • CS50 Web (course) -
  • 3 Python Automation Projects for Beginners (video) -
  • Sorting Visualizer Tutorial (video) -
  • Master the Coding Interview: Data Structures + Algorithms (course) -
  • Algorithms Specialization (course) -
  • Algorithms, Sedgewick (textbook) -
  • Leetcode (platform) -

Who am I?

My name is Tuomas, I am an ex-economics student who decided to leave that industry because it didn't inspire me and teach myself to code online instead, and now I am happily working as a software engineer. Outside of my career, I also have another career as a Youtuber where I share my journey with all things code and life! You can find me at:

Meet Your Teacher

Class Ratings

Expectations Met?
  • 0%
  • Yes
  • 0%
  • Somewhat
  • 0%
  • Not really
  • 0%
Reviews Archive

In October 2018, we updated our review system to improve the way we collect feedback. Below are the reviews written before that update.

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.


1. Class Intro: Hello and welcome. So you've decided you want to learn to code. Let me tell you that it's probably the best decision that you've ever made in your life. Coding is one of the most amazing skills in the world. Not only can you build projects to improve your life, automate boring tasks, whether at home or at the workplace, best of all, learning to code and build new and amazing career that is not only well-paid, but also gives you great work-life balance and lots of extremely interesting challenges to tackle. But most people who try to run the code, unfortunately, never succeed. Coding is a very particular skill and it's not easy to do. That's why I made this class will teach you everything I wish I knew before I started teaching myself to code online. This class is perfect for you. If number one, you haven't properly started learning to code and you don't know what star or number two, if you have already started, but you don't feel like you're making progress and you feel like, you know, properly retaining all the stuff that you're learning. This is not a programming class per se, but this is the complete guide to learning to code in line that you should have a width you during your coding journey. In the first part of the course, we will address the four main factors that you need to keep in mind when you're learning anything in order to learn in the most effective way of talking about how to stay motivated, how to stop procrastinating, and most importantly, how to enjoy the journey along the way to keep you going. The second part of the course, we will delve deeper into the specific languages I recommend you start with as a beginner, as well as my reviews of the best resources and courses that you should start with and how to use them effectively. And lastly, we'll talk about how to build a really cool portfolio projects to finally get a job. I made this class because I see so many people wanting to learn to code, wanting all the amazing benefits that coating can offer, but simply doing the wrong things which leads them to get demotivated. And so they end up quitting before they get there. So let's learn to code together. I'll be excited to see you in the first lesson. 2. Am I Smart Enough to Learn to Code?: Welcome. You might still be having some doubts because there's a beginner. I know that programming can seem pretty scary nowadays whenever I tell my friends that I've taught myself to code and all this, they always assume that I must be really smart because I was able to teach myself to code. And while that's flattering, that is just something that's not true at all to larger code. You don't actually need to be smart. Most people think that coating involves some very high-level complicated math. And it's like so hard that you need to have this like crazy math wizard mind to be able to do it. And that's really not true at all. That's it. Coating is actually not about maths at all. Well, we first need to understand is the difference between programming, Computer Science and by the way, programming and coding are pretty much the same thing we will be using those two terms interchangeably, a programming is simply giving it a computer logical instructions. None of this actually involves a complicated math at all. The part where you do need to be pretty smart in the domain of very theoretical computer science, where you're thinking about the theory of algorithms and maybe you're getting into like AI or machine learning to do that. Sure, You need to have a good math background, but simply to write programs, to code, all you need is some very basic logical thinking. So which will naturally learn as you go through this class and you're beginner resources. So if you say I have any fear about whether you're smart enough, whether you will be able to learn to code. You need to stop because anyone can learn to code. I'm not a genius at all. I'm literally the most normal guy in the world. We just figured out the right things to do at the right times. And hence I was able to do it. And if I did do it, you can do it too. Okay. So now that we've gotten over the fear of, am I smart enough? It is still true that coding is not easy to learn, but it's not hard in the sense that you need to be really smart. It's just hardly the sense they can take a lot of time and you need to really understand how to learn it properly. It is really different to learning many other skills. That is why the next slides we will get into the proper learning techniques of what you need to know during your journey. So I'll see you there. 3. The Learning to Code Equation: Let's talk about the learning to code equation. For this, we'll be using an analogy of a ship is sailing through the dangerous waters of pitfalls and mistakes that you can make when learning to code towards the destination of becoming a competent programmer to sales of this destination successfully, you need four main factors. First of all, is that the y, which is the king of the ship that sets the purpose and the reason why you are trying to get to your destination. The first mistake that people always make when they're learning code is that they never stopped to think why they're actually doing it. And I believe this is one of the biggest reasons why people end up getting the motivated and quitting. The second step is discipline, which in our example here, he's like the actual ship. This is the core that is needed to keep you going through those hard moments. Or he will think that in order to learn something, you need motivation. But the fact is that you're not always going to be motivated to what you really need is discipline over section where we talk about this. We'll talk about exactly how to build. Next you have the methods purging this metaphor is like the captain of the ship, while the y is the grant mission that the king who commissioned the ship has given you. The captain is the one. Whereas to actually think about the practical things of how do you actually achieve this purpose of getting your destination? And the way you do that is by adopting the right habits, the right strategy, and the right method of studying those. Actually, in the brief section where we talk about this, I'll be teaching you how to do exactly that. Lastly, is the practice, the actual coding and how to do that, right? And in this metaphor, these are like the work hours of the ship, the ones who do the day-to-day work, the grunt work, to actually make the ship move towards the target. And you're, when you're learning to code the actual practice, the actual doing it is what makes these concepts ingrained into your brain. But talk about a couple of learning techniques that really emphasizes and really allow you to start practicing rather than later is one of the biggest mistakes people make is that they don't start applying the things that they're learning early enough. But then this is the problem of people not knowing how to do that. So that is the plan. And in the next four sections, we will be delving deeper into each of these part in building your learning equation and your learning plan. And after that, we will get into the specific coding resources, project, and languages. But you will then be utilizing this plan going forward. But I think these next four sections are probably the most important part of this course. And something that you need to have along the way wherever you end up designing afterwards. So make sure you pay attention. 4. Start with Why: He's right here is probably the most crucial factor that will determine whether you will end up sticking to learn to code and succeeding or quitting after two weeks, like most people do. And it is the why, why do you want to learn to go Seriously? Stop there for a moment. Stop this video and think, Why do you actually want to let the code, you really need to think for yourself, what is the purpose? What is the grand goal that you are going towards with the scale? I can tell you example from my previous life when I was trying to learn a bunch of different scales, e.g. at one point in my life, I was trying to learn Chinese like with most girls in the beginning, I was really excited to learn Chinese, but after a couple of weeks, I simply got demotivated and I really, and keep going. But it really just, I just couldn't figure out why that was because normally I am a very discipline and a very motivated person, but we Chinese it just simply wasn't working at the conclusion I came to. Is that the reason why I wasn't able to stick to learn in Chinese is because I didn't have a strong enough purpose. Some of the reasons to learn a human language could be that you want to live in China or you want to communicate with your Chinese co-workers and maybe you want to learn some books in Chinese. But none of these really excited me at all. So at the end of it, whenever I needed to start learning Chinese, when I didn't feel like it, I just couldn't get myself to do it because there wasn't a strong enough reason, the strong enough purpose to keep me going. That is why, when you're learning to code, if you don't figure out the purpose, the reason, the mission, before you start, you really don't even know where you're going. Because the ship example, you can probably see that if you don't actually decide where we want the ship to go, you'll just end up sort of floating there and not really going anywhere. So really stopped to think about the why, the reason over the first part of the class project, I want to just stop, take a piece of paper and write down the reason or reasons why you want to learn the color coding is not easy to learn. If you don't do this, you will not be able to have to motivation and discipline to push through those hard moments because it will get hot. So write down your why and then throughout the rest of your journey, whenever you don't feel like putting in the work, open this page and look at your reasons are just remember them in your mind. And I promise you you'll be able to get work done. So if you figured out your wife already ahead of a lot of different people, but there's still a lot of things you need to do about figuring out how to actually push through when things get hard. So in the next section, we'll delve deeper into the discipline factor of the learning equation and how to be able to do the hard work even when you don't feel like it. 5. How to Be Motivated to Learn to Code: Motivation is the thing that most people wait for before they take any action. Most general thing that motivation is good is something that you want to achieve. Something for motivation is actually bad. Who's, What is motivation? Motivation is essentially just an emotion. It is one part of your brain that is telling you what it wants you to do at any given moment. But the problem here is the side of your brain has control. This emotional of motivation is not telling you to do the things that you should actually be doing for your long-term benefit. The way I think about this is that you are here and over here are your goals. And in-between, there is a bunch of actions that needs to be done for you to get there. Let's say for the sake of this example that you need to take 10,000 actions, whatever that means to reach, please go to bridge this gap. But if you wait for motivation, you're actually only end up doing pretty like 20 per cent of all of these actions. Because the fact is that you are never going to always be motivated. You're probably only going to be motivated like 20% of the time, which leads to the fact that you only end up taking like 20 per cent of the actions that you need to take to what we need to figure out. Is there a way for us to do the rest of this action, the rest of these 8,000 actions, even when you're not motivated, we need to essentially run to bypass is emotion of motivation. The best way to think about is that as soon as two sides of your brain, on one hand, there's this sort of the brain which we'll be talking about, is controlled by motivation, that's controlled by emotion. And this side of the brain in sort of evil and pleasure seeking. And it always is just telling you to do the things that will give you most pleasure at that particular moment. So it's a very short-term focused part of your brain. And for most people, this is the side of the brain that controls pretty much all your oxygen, which is not very good for you. But then you've got this other side of the brain, which is really thinks about the long-term, is really like the rational, responsible guy who's telling you what you should actually be doing rather than what you want to be doing. But unfortunately, most people's brain, it is this emotional, short-term brain that is lot more powerful because they have a very potent weapon called dopamine. Dopamine is this hormone essentially gives you pleasure whenever you feel motivated to something, wherever you want to do something, it is because you think that that action is going to be giving you dopamine. Dopamine is all about the short-term, e.g. eating sugar, maybe listening to music, all of these things give you dopamine in the moment and your brain is addicted, dopamine, it once more, dopamine. So whenever this short-term side of your brand can tell you that doing something we'll give you dopamine. You're always more inclined to do that. Now, sometimes the right things will give you dopamine as well. Like doing work also gives you a dopamine and also it makes you feel good. But most of the time they won't because most of the time you always have some things, some actions you can take that will give you more pleasure in the moment. But these actions are almost never the actions that will actually lead to you reaching your goals, reaching your purpose, and getting long-term benefits. So that is why you need to stop listening to these motivational side of your brain. The most important thing you need to learn is to stop seeking short-term gratification and instead start seeking long-term gratification. If you learn to code, if you're doing successfully, your life will be so much better. In the long term, you're going to have so much more fulfillment when you've mastered this really hard skill and you can do all the cool things that you can do with it. And probably you will also have a really great career which will generally improve your life in the long term. But to get here, you first need to do the hard work and to adopt this, to have a discipline which essentially just means listening to this rational side of the brain, always thinking, what is the long-term best thing for me to do right now? And if you can't do this by sheer willpower, there's a couple of tricks that you can do to try to cheat this pleasure seeker short-term brain into thinking that what your long-term brain is telling you is actually what will give you more short-term pleasure as well. First of these is that you're going to try to make the action more pleasurable. E.g. when you're learning to code, listening to some really good music that you enjoy, and then also give you a lot of pleasure in the moment, which makes the motivational side of your brain look forward to the action more, which will make you more likely to actually start doing it. The second idea is gamify the system somehow, if you're someone who enjoys video games like I used to when I was younger. Thing of the goals that you're trying to reach in your programming journey. Sort of like game achievements, like trophies that you're trying to pursue. The last thing is to shorten the feedback loop, which means doing things in such a way that you're seeing the fruits of your learning much sooner. Wandering mic coating or learning and skills is that given, take a very long time for you to actually see the results of your hard work as well. One of the things that I emphasize the most on my YouTube channel e.g. is building projects that are actually useful for you. So as soon as you can start applying your learning style, building practices, projects, and think about problems you might actually want to solve recoding, e.g. a lot of my automation projects try to solve this exact problem. And we'll also be talking about these kinds of projects later on in the course so that you can show them the feedback loop gives you this reward of your hard work much earlier. So it doesn't so much things you can do to sort of trick your short-term brain into thinking that you should be learning to code and therefore giving the motivation. But most of the time, what you specifically need to do is not even think about motivation at all. To forget motivation, simply do the hard work even when you don't feel like it. That is how you will build a strong ship that will take you through all the pitfalls that most people will fall into, like quitting because they're not motivated. 6. How to Stop Wasting Time: So this Thursday, this first part of the course, we'll discuss how to build the right habits and the right system, as well as the right schedule for you to learn in the most optimal way. The first and probably the most important idea that you need to understand about learning effectively. It's only called Deep Work. The way most people work is using shallow work, which means just very distracted work where you have your phone around, you're probably somewhere over here and you're getting notifications or someone messaged me and let me check this out. Then you put it away and you try to get back to work. But this is actually an extremely ineffective way of learning. I think that if you're just checking your message for like 5 s and you'll get back to work that this is actually fine. But the way this actually works, this dark if you are distracted for even 5 s from your work, is sort of reset your brain in such a way that it's gonna take you up to 15 to 20 min to get back into focus. And there's actual research on this. So that's why it's critically important, is that when you're working, you're only focusing on your work. You're not allowing any distractions for any reason. You're closing your door, no longer speak to you. Putting on some headphones for someone like white noise. If there's noise around you, whatever you can to set these sort of one-to-two, our Deep Work box into your calendar where you're only allowed to focus on your work. If you do this during this 1 h two hour blocks, actually achieve more than what someone else might be able to achieve. Who's doing 6 h or some very ineffective, shallow work. That was a book that I recommend you read about this. It's called Deep Work by Cal Newport. And the author of this book is actually a computer scientist himself. But that's sort of where this whole idea of deep work started from. One of the things that are the most successful people, the people who actually master very hard skills, very fast master. And the other great thing about Deep Work is that it actually requires you to spend a lot less hours working than you think. You might think that to learn to go in like six months, you need to spend like six to 8 h every single day. You've seen all these YouTube videos that go like, oh, how I studied for 12 h a day. But if you're actually studying effectively, It's actually pretty impossible to do six or eight or 12 h. Because when you do deep work, research has shown that the limit for especially something cognitively demanding, like learning to code, it's only something like 4 h. So if you have the time doing it to two hour blocks of deep work, that will get you up to 4 h is pretty much the maximum that you can do. And beyond that, trying to do even more can even be counterproductive to figure out a system for yourself where you can place these deep hour blocks is religious, depends on your schedule. I like to get at least 2 h in the morning. Maren first wake up because when you wake up, especially if you've got good sleep, which is really important, you're going to be allowed energies for me, this is the most optimal time to learn, but you need to figure out for yourself, when do you feel you're the most alert? When do you feel like you're most able to get things done? And so definitely experiment with trying to study at different times of the day and figure out what is the best time for you. And it's super important. Take breaks in between and actually let your brain and recharge and recover. Your most important weapon when studying effectively is focus. And focus is sort of like a muscle and it works the same way as training your actual muscles that if you tried to do like 100 reps of bench press, you probably know that does not even the most effective way to do it, the most effective way training muscles, it will do just enough to induce a response and then use the rest of the time to just rest, recharge for the next session. And that is exactly how you also need to think about your focus muscle. And so while we've covered so far, is first of all, you need to start adopting deep work. And secondly, using a calendar to schedule in these deeper accessions in the time that it makes most sense for you and for your schedule for me, 2 h in the morning than 2 h after lunch and then after dinner, if I still have energy, I can try to do a bit more, but at this point is pretty shallow work and somebody that's not even that effective. And so a lot of the time I literally just rest or the rest of the day and then make this even more effective. The other habit they usually try to adopt is every morning instead of daily goals of what you want to achieve that day because you have a problems have to complete for the course that you're doing in the morning. Right down on your notes that today your goal is to finish that problem set so that when you get into these deeper access and you know exactly what you need to do. So you don't need to use this deep work energy so to speak, to figure out what to do. And you can simply just do what you need to do. And the other as to what you actually do during your study hours. There's a lot of ideas about learning effectively that most people don't quite understand. E.g. one of the most common ways of studying is highlighting a bunch of texts on your textbook. But if you actually look into it, you'll find that this is a very ineffective way to study in other things that people usually do, but that's actually not effective. Is it rereading stuff or just passively re-watching some tutorial, e.g. these are all things that make you feel like you're being productive, but you're actually not because the way your brain actually learn something is true retrieval through actively trying to retrieve information out of your brain. So what this means in practice is that you need to practicing what you're learning at all times. Whenever you learn something, tried to apply yourself without looking at the tutorial, you can use tutorials for inspiration. You obviously need to learn the theory, learn the syntax of languages before you start building something. But as soon as you can, apply them, as soon as you write the simplest thing that you can possibly right? Where the things that you've just learned. Because when you're actively retrieving this information out of your brain, that is what actually makes your brain understand that this is important, and therefore, it makes it create these connections automatically. This stuff is ingrained in your brain and you actually know how to use it. And this is how you actually solve the problem that most people have of just studying, studying, studying, but never feeling like they actually learned something. So those are the most important habits then you need to adopt when you're learning to code. And so what I want you to do as the third part of the class project is to write down for yourself, what is the schedule that you want to stick to a total how much time you have during the day, get two to 4 h of coding time that you need to do every single day. So thinking about what makes no sense for you, write down 123 deep work sessions that you will be completing everyday and when you want to be completing them. 7. How your Brain Actually Learns: Most schools actually teach things in completely the wrong order. Because the way schools stage things is that they go through the theory and then all the offer that they apply the theory into something practical, which seems reasonable. But in a lot of cases, especially when it comes to coding and existing VM very bad way the study. And it can lead to demotivation and difficulties in actually internalizing the concepts that you're studying. But the key idea here is that the way you actually learned something in the way learning actually happens is when you retrieve something out of your brain, when you actively use some piece of information. Because when humans evolved, our brain evolved in such a way that it sort of trying to hold on to the information that is most important to it. Even if your brain things that some piece of information is not important, it's going to actively fight against using neurons to like hold it in your brain. So to actually learn to code, we need to make our brain think that coating and the coating concepts that you're learning are extremely important and important enough for your brain to expand resources to retain the information. So how do we do that? Let's say you're studying a course on the theory of algorithms. We first learned about the theory of algorithms. It's already going to be very difficult for you to actually see where these are used and why these are important. And this is the biggest mistake people make when they're learning the goal for the theory first. And because your brain can't grasp on where and how practically you can use this information is not going to be able to retain the way it usually to actually approach learning to code. If a yes, read about it, which is drawing, then immediately think about how you're going to play. You think about what sort of problem and you're going to apply this rule because then your brain will actually go, oh, this guy is actively trying to retrieve this information and accidentally trying do them actively trying to solve a problem for themselves, this information must be important. Therefore, we should hold onto it as hard as we can. So that is how you actually retain these concepts and most courses and a lot of the courses that we'll talk about in the second section to obviously give you problems and projects to work on. That, that's great, but a lot of people do and even I was doing in the beginning is skipping through a lot of these practices projects because it can seem way too easy in the moment. A lot of the time when you just learn something, it might go like, oh, I don't need to actually write this code myself because I'm just learning I know how to do this. There's actually not the right way to go obese. If you don't actually actively write the code yourself, you will not stay in your brain. So the right way to learn to code is unsurprisingly actually just code a lot and not just what other people call it. The way I think about it is that whenever you watch some tutorial and watch some other person doing something or maybe you read something like concept of theory, a concept that's being placed in your short-term memory. And that's no, you're learning. But that is an opportunity for you to learn that there is an opportunity where you now you have this concept in your short-term memory. You can extract it from there to apply it to some particular problem. But unless you do that, you will eventually disappear from your short-term memory and then you'll have to re-learn it in the future. And this is the reason why most people learn things. They have to keep rereading, re-learning things. And things just can't seem to stick. But if you adopt this practice or generally always applying as soon as you can doing those practice project, figuring out problems for yourself that you might be able to solve with these things that you're learning that will actually take this information from the short-term memory and ingraining into long term storage of your brain. And that is exactly what you want. And when you do these, you won't have to keep trying to remember stuff because you will just naturally understand them and naturally know how to use them. Because you've gone through the practice of ingraining these things into the long-term storage of your brain. This is the actual work ship analogy, the actual workers that will actually make your ship go forward and actually build this base of knowledge, this base of knowing how to code to get you towards the goal of being a great program. Because what a great program, it is not someone with a ridiculous memory which just memorized all these concepts or these data structures and algorithms. What a great program is. Someone who just naturally understands these things and naturally knows how to use them the right way in the right times. And it's this top-down learning approach, which is this practice first and learning approach. We will actually get you that, that is fourth part of the practice project in the spirit of practicing and solving problems. When they write down a couple of problems, you imagine that right now, you knew everything about coding, you knew everything about programming. What are the problems that you would actually want to solve? What are the applications that you would like to build? And while the programs that you would actually like to go here, I need to write anything about like how you would do it. But if you imagine that you could do anything, we code what are the sorts of programs and the sorts of apps that you'd like to build. And then later on in the course, we will actually revisit this list and think about more practically, how you might go about doing that, how you might go about building these projects. This will also give you motivation and it can be a part of the why that we talked about before that will keep you going and going towards some goal of being able to build these things. 8. Part 2 Intro: Welcome to the second part of this course. So now that we have figured out ourselves a learning system that utilizes the science of learning and all the principles that are going to keep you disciplined and keep you going throughout the way. We can now get into the fun stuff, which is what is the best step-by-step system that you can build yourself to learn to code not only effectively, but also as quickly as possible. Because the last thing I want you to do is waste time doing something that you could be doing much faster. First, we will talk about what is the best language to start with. And we're also going to discuss exactly why in these languages are the ones that are probably the best for most beginners. Or that we're gonna get into a step-by-step system of the resources that I recommend. You first start with the ones that I recommend you go into once you become a slightly more intermediate and then also some more advanced stuff throughout the way, I'm gonna be giving you a full checklist of all the concepts and items that you should be trying to master at each stage of your learning. Again, this is not a coding course, so we're not actually going to be going over them because I believe there are so many great resources, most of which are completely free for you to do out there already on the Internet. The purpose of this class is essentially a review. A lot of the more popular ones see which ones might be for you, which might not be for you, so that you know exactly where to go first. You're also going to talk about the steps that you need to take off the you got into a decent level. We coding to actually get hired at a company saves you a lot of people prioritizing the wrong things where I sort of over-complicate in the process, when the actual process of getting a job is actually quite simple. That's not to say that it's easy, but as this very simple framework that you can follow, that is going to give you a very good choice. Well, with that, let's get into the first lesson of the second part, which is which language should you start with? 9. 9. Which Programming Language Should I Learn?: What is the best programming language for beginners? For most people, I recommend either Python or JavaScript. Essentially as a beginner, the criteria that you should look for in a language or the ease of learning, the amount of job opportunities, as well as the kind of things that you can build with them and how fast you can build up an ability with these criteria, Python and JavaScript, other two languages that meet them, the best, Python and JavaScript are what are known as high-level languages. And what this means basically is that the way computers actually work in the very, very low-level is that computers don't even understand programming languages. All that computers understand, or zeros and ones and an even lower level, the physical level, you just have electricity going through all these transistors in a very complicated way to produce some output. Reason why we have programming languages in the first place is because writing this for humans, just writing is zeros and ones and remembering all this sequence of zeros and one is equivalent to multiplication or something like that can be very difficult. So we have designed programming languages that are very similar to English. They're very easy for us humans to understand and to write. And then we have britain different programs called compilers, which then take these high-level programs in programming languages and convert them automatically into the computer readable binary code actually create some results. So this leads to the question of, why do we even need different programming languages if all of them are just going to be translating machine code, every programming language can probably write any program that you want to write. Anyway, why do different programming languages even exist? Well, that different types of applications we will want to build different types of purposes. And for different purposes, different sorts of language syntax and different language features are most appropriate. One spectrum that you can put a lot of language and in high level and a low-level language means that essentially the language is quite close to the actual hardware of the language. So you need to worry about very low-level details like memory management, like actually dealing with how bits are actually stored in the computer's memory. We've also constructed these high-level languages like Python and JavaScript, essentially hide a lot of this detail for you. They do a lot of these low-level details for you without you needing to worry about it. As a beginner, these high-level languages are in my opinion better because they allow you to focus on the things that matters the most as a beginner, which is learning programming fundamentals, learning basic coding principles like loops, variables, functions today is the first reason why Python and JavaScript shy. Second reason is that because most applications nowadays don't actually require you to work with very low-level optimization. Python and JavaScript are also some of the more popular languages in the world. If you look at job opportunities by programming languages python and JavaScript, I usually at the top. So that's the second reason. And then the third and fourth reasons are that simply because it's very fast and very easy to write code in both of these languages. You can build a ton of stuff with them. Essentially, if you want to go into web development, e.g. you're gonna build any website in JavaScript because the front end of pretty much every website in the world is written in JavaScript. That is the sort of the defacto language of the web of a Python scripting application. So if you're interested in machine learning or AI, all of that is done in Python. These two languages have the most applications out of any programming language. And this combined with the fact that they are very easy and fast and right. These are the five that you can build portfolio project Foster. And lastly, because of all of these reasons, these two languages have the most resources online, most of the most popular free online resources to teach you stuff the code are usually based in either Python or JavaScript because these languages are so popular. And so out of these languages, which one should you pick them? I would personally pick Python. Python is sort of know for a fact. The Python syntax is extremely easy and extremely like, English-like, and there's very easy to understand and write even more so than JavaScript is why most people usually recommend Python as the first language. And it's the most common language for people to start with, using very good for learning programming fundamentals of the Yolanda fundamentals, you need to make a decision if you're specifically interested in web development, as in you want to learn to make websites, then it usually probably steer towards JavaScript because JavaScript is essentially known as the language of the web era website. You have the front end and you have the bucket. Every front end of every website is written in HTML, CSS, and JavaScript. If you want to go there and you need to learn not only JavaScript, but also CSS and HTML. But the thing is you don't really have a choice. Those are simply the languages that are used for the formula. For the back-end, you have a lot of different options. You can use Python, you can use JavaScript, you can use, I don't know, PHP if you want to be crazy. If you want to be a back-end developer, you can go with either one. But ideally, if you want to understand Bride, the front-end and back-end, JavaScript is really the best choice because you can simply focus on mastering JavaScript without having to learn multiple languages at the same time, if you're into web development, you should steer towards mastering JavaScript rather than mastering python. Whereas if you're more interested in scripting type of applications and you want to build web scrapers or bots to automate random stuff like I've built like bots for Tinder or to automate like my finances. All of those sort of hacky type of applications I usually done in Python. And in another area where it shines is data science, AI, and machine learning. Big buzzwords nowadays, if that's the area that you see yourself eventually wanted to go into, then Python is definitely the best choice because it is simply the defacto language of those areas. So in summary, choose either JavaScript or Python. You want me to recommend one language just start with, I will start with Python. Similarly for the programming fundamentals, unless you know for sure that you want to specifically become a web developer. In which case, I will just start with JavaScript and focus on JavaScript fundamentals in its ask yourself, which area of programming do I want to start learning first and then decide the language based on that? And then obviously if you're interested in a more niche applications like let's say you want to build games. I think the language that they use, C plus plus or C Sharp, you want to build a mobile application, specifically iOS application, you should go with Swift because that's simply the language that they use to essentially the language that you end up meaning throughout your career just depends on the application and the area of programming that you want to specialize in. As a completely beginning, you probably don't even know what you want to specialize in. Otherwise voyage starting with a different JavaScript or Python is just a very easy and safe choice to make. And then later on if you decided yet actually, I want to become a game developer. You can go and learn a C-sharp instead. So I hope this video helps. Next, let's get in to the step-by-step path that I would personally take if I were starting to teach myself to code today. It's a class project of this lesson. I want you to go online and research different areas of programming. Go on YouTube, go online just to sort of get you introduced to the different areas that exist within the programming industry. There's so much out there. Then write down the top three areas that interests you, and then also look up what languages are most used in those areas. 10. Which Coding Courses Should I Choose?: Okay, so you decided which language do you want to start with? Where should you actually start and what are the things that you should focus on at each stage of your learning? For the purposes of this video, we are going to use Python and JavaScript as the examples because those are the languages that I recommend. But at the very first step, you should simply look up a very basic tutorial slash and very basic cause or that language Python. The course that I recommend most people start with is a course on Coursera called Python for everybody. It's one of the most popular Python courses in the world, is probably one of the most popular programming courses in the world. And it's also the course that I personally started with when I was first starting out teaching myself to code. By the way, all of these causes are gonna be linked down below in the course description. When you find the course on Coursera, you can click on audit for free so that you don't have to pay for the certificate because honestly, Coursera certificates are not important. What's important is the material for JavaScript. There are a lot of options. E.g. free code camp focuses a lot on JavaScript and there's also something called the Odeon project, which is a very sort of elaborate resource for you to go from zero to becoming a web developer. This is a resource that I recommend you start with. If you know specifically that you want to go into web development is going to teach you the basics of JavaScript programming, as well as the basics of CSS and HTML. Then all of those languages in more intermediate level, including a lot of practice projects along the way, as well as also the, all of the most popular web development frameworks like React, NodeJS for back-end, and a lot of other stuff isn't very long and elaborate resource. But if you just look at the stages of learning from basic to intermediate to advanced in a very basic level, you just focus on the following concepts, variables, datatypes, control flow, ie, if statements and conditional statements for and while loops, object oriented programming and creating classes and objects and how they work. Then lastly, functions and methods. And what is the difference between functions and methods? What I would do is take out a notebook. Does those are gonna be part of the class project of these lessons and write down these six concepts once you know what all of these mean and how to use them. And hopefully you've used them in a bunch of practice projects that you would do during your basic coding resources that you know, that you've got the basics down. And once you've got this programming fundamentals down, what I recommend many people do is also learn some a computer science fundamentals because there's a lot of stuff here. Maybe not the most important, the very beginning, especially if you just want to build websites. If you want to get a job, you're going to eventually have to master something called data structures and algorithms. For this is very useful for you to actually understand how computers work at a low level of LacY, the absolute best course, the absolute best resourced I recommend everyone does is a course called CS5. This introduction to computer science and programming by Harvard University is a completely free online course. I think it's the first course that actual Howard computer science students take during their degree. But Howard have made it available for everyone to do online. You can find it on Add x and a lot of different platforms. Essentially, we want to avoid paying for the certificate on ethics and simply find the CSP platform, which I'm going to link down below in the course description. Once you do it, you don't have to pay for anything. Many of you will think that you have to pay for the certificate. That is not true. If you do all the assignments, if you watch all the lectures and you're doing a final project, you're gonna get a free certificate from a CS5 for your completion job. Just to put that out there, don't have to pay for it at all. I have a full review of his course on my YouTube channel, which I'm also going to link down below, but it's essentially going to give you a very high level, but also at very comprehensive understanding of what computers are, what programming you would compute the actually means how the computer memory works at a high level. It's also going to give you an introduction. Data structures and algorithms. Rosanna, absolutely crucial concept for you to master. If you eventually actually want to get a job as a software engineer, you're gonna get some exposure to a lot of the low-level details which you've been ignoring up until this point. And just a note, you could also completely skip the Python for Everybody course and simply start with CS 50. If you feel like you want to go into the computer science fundamentals tools head-on first. That also works after this stage, you are going to be at the intermediate level. You're going to know how to build a more intermediate level programs. And you're going to have some very crucial computer science fundamentals under your belt. What I did is I did CS 50 is follow-up course specifically on web development is a very difficult, but a very comprehensive course that's going to go very deep into web development, is going to have some very complex projects for you to build along the way. But if you complete CS5, these follow-up course on web development, you're going to have a lot of portfolio projects for you to put on your portfolio and even then start applying for jobs width. Or alternatively, you can continue on with the audit project if you started with the audience project order, I recommend you do things, is that you first do their foundations path, then go to CSAT, and then off of that, either continue with their more advanced JavaScript path or CSF, these web development course. If instead, you don't wanna go into web development at all and you just want to focus on learning Python or this point, you might also want to start looking into what are actually the areas of programming that you're interested in if you're into AR, if you want to, machine learning, we'll take up again CSF, these AI course just are thinking about where you actually want to go. And specifically you want to start thinking about a more complex sort of a bigger project that you might want to build with your programming skills. If you did any of these courses, you sort of already going to have more complex projects to put on your portfolio. Again, because the courses include a lot of very complex practice project, but these are also very important for you to figure out a project that you can build from scratch on your own. And in the next video we're going to talk a bit more in detail about the kinds of projects that you want to build for your resume to get a job. 11. What Coding Projects Should I Build?: You've learned the basics of programming as well as got some fundamentals computer science concepts, as well as more intermediate coding concepts under your belt. This is the stage where a lot of people get stuck. Because while a lot of people do, is they just keep on doing more and more courses. They keep on watching more and more tutorials on YouTube. But actually at this point, you should stop doing that at least for a while. If you actually want to become a good programmer, it's absolutely crucial that you start building, as we discussed before, the way your brain actually learns things is by applying them to actual problems as well. There are two types of projects you'll be building throughout your learning process. First of all, we've got beginner projects and I'm not gonna spend too much time talking about this because during your basic and intermediate coding resources, like the ones that we discussed in the last video, you are going to be building a whole bunch of these projects. And by the way, you should absolutely not be skipping this, even if you feel like you already know how loops work, e.g. you shouldn't skip doing the basic project where they tell you to apply it. I made this mistake time and time again in my own learning path. I thought I knew something and I skip the project. But then when it came down to actually applying this in an actual real project, I suddenly didn't remember how to do it anymore. So don't skip those practice projects. What you specifically built here doesn't even read about that. But the real goal of all of these projects in general is just to apply the things that you've learned and to actually code up the stuff that you've seen in tutorial, e.g. pretty much as soon as you learn any concepts for, let's say you learn how while loops work to figure out how to actually code up. It can be the simplest thing in the world. Just code up something when you're solving an actual problem and figuring out an actual use case where while loops are used. If you want some ideas on these beginner projects, just getting you to practice these very fundamental, basic principles that you've been learning before. I made a YouTube video as very popular on my channel about basic Python project and I plan to make similar videos on JavaScript. Those will also be linked down below in the course description. But now what's really important to discuss is how to approach building more complex sort of intermediate slash advanced projects that you can then actually put on your software engineer resume. And the questions that people often ask here is, first of all, what kinds of products should I build and then how to go about building these projects efficiently? Because a lot of people, myself included when I was starting out against stuck here. When you're choosing a project, there's three main criteria that you want to look for. First of all, it needs to be a project that you are actually excited about. And this relates to all the things we said about having a Y. So once you've figured out the project that you actually want to solve the next criteria that you want to have. Ideally, it needs to showcase a lot of different skills. So at this point that you've got a lot of intermediate skills is figure out a project where you can challenge yourself as much as possible and use as much of the things that you'll learn as possible. Because the more you can show, the more convinced your employer is going to be that this person is not just one-dimensional, he just knows how to write Python automation projects. You actually understand a lot of different things and how to make them work together. Third, criteria is something that is easy for the interviewer to understand. So that's not too niche where no matter what background interviewer has, they can understand it. So a couple of good examples of projects that incorporate all of these different criteria is e.g. this sorting algorithm visualize it that I built for myself. E.g. I. Got this idea from the climate me hi Alaska YouTube channel. He has a full tutorial on this. I think it's an awesome project and he actually used the same project we will get into Google. I'm gonna put his tutorial for this project down below in the description. And I've also built this for myself. And this is actually one of the projects that I have in my own software engineer resume in other option that's very popular, that's been recommended online is something called a bug tracker and then built this myself. But essentially it's a perfect resume project because it's something that especially someone in the software engineering industry can easily understand because it's actually a tracker, tracking bugs in the software development process. The additional benefit showcasing that you understand the software development process then yes, this means that you have to do research into this, but that's also a good thing. In addition, it requires you to build a lot of complex features. You're going to have to understand the front end, the back end, how to make it look visually appealing. There's a lot of different elements that go into it too, especially if you want to be a web developer. This is a great project to build. A third example is something that you will actually build as your final project in CS5 is a mock stock trading app. This is also something that I have in my own portfolio is a great project because it requires you to build a front-end and back-end requires you to implement APIs. It requires you to implement login features. So a lot of different features in one, exactly what employers want to see it as. Just three examples. But essentially, if you don't find any of these exciting, just go on Google, figure out some inspiration from ideas. And out of those, you're probably going to start coming up with some ideas that might actually be exciting for you to build. And once you've chosen a project, the way you want to go about it is through these sort of iterative projects building process where essentially the first thing you do is you focus on building an MVP and what is an MVB stands for Minimum Viable Product where the very first instance, you focus on building the simplest version of the project that you possibly can that has the minimum amount of features for Work if that makes sense. But e.g. if you're building the algorithm visualizer, first, you just focus on implementing the sorting algorithms in code on the command line, not even worrying about the visualization first, I don't know if you've gotten that down, then you can move on to the next stage of the next layer of features that your project is going to need in order of importance, which is maybe building a very simple version of the front end, sort of a mock version of how you envision the visuals to look like. And then the third stage will be to then combine your algorithms that you've implemented into the visualization and to actually make them appear visually in the front end to any approach building project in this sort of iterative process, going from the most important coffee juice into the next stage. And then the very last is very niche or of optimizations. And by analyzing it, It's a lot easier to keep yourself motivated and discipline to actually finish it, especially for your first project, probably like 95 per cent of the things that you do, you're actually not going to know how to do straightaway. You've done those courses, whatever specific thing you tried to do, always, just Google things. So maybe you don't know how to do something. Have you are looking at the sorting algorithm visualization. You're going like, well, I could never do that. Don't think that way. Don't just stop and not do it because you don't know how to do it. The whole point here is that you learn how to do it and how do you learn how to do it? Well, you just Google things, you start thinking, you stop and think, what are the things that I would need to build for this project? Build a list of features that you're going to have to learn to figure out how to build. Maybe you identified ten things that you will need to build for this project work. And maybe only two of them, you will know how to build off the top of your head. Each eight of these, you put them in order of priority in terms of what is most important for the project to function. And then you just start going through them one-by-one and googling every question that you don't know the answer, the articles on StackOverflow. So whatever, whatever problem you're trying to solve in your project, it is possible to solve it. You just need to have the tenacity and the discipline to go through with it and to keep finding out things. Whenever you get error, you just Google the error code. That is how building coding projects actually work. You might think that programmers who learned to code, they just didn't know how to build everything and they just cut up without looking at anything up, but that is not how it works even as a professional, the difference between experience and inexperienced programmers is that they experienced ones know how to Google things better. So I literally, I cannot stress enough how important it is to have the mindset of being humble enough to admit when you don't know something and then just asking Google for the answer and the ability to actually go out there and find things out on the Internet is you simply adopt this mindset. If you typically do this with anything that you're building, you're literally going to be able to build anything because anything that is humanly possible to be able to decode, you can build, you can do it if you just spend enough time on Google asking the right questions. So that is how you build projects and have you build a couple of days, maybe two or three good complex portfolio project. It's much better to build two or three complex ones than like ten very simple ones. So going on two or three, then you're going to put on your resume. And after that, you can really start thinking about applying for jobs. Because at this point, you know how to code, you are good enough to get a job. So that is exactly what we're going to talk about in the next video. 12. How to Get a Job: So you've learned programming basics, you've learned intermediate programming as well as some computer science fundamentals. And you've built a couple of interesting and complex portfolio projects. You are ready to get into the advanced stage and really start thinking about how you're going to get a job. This people over-complicate the literal process for getting a job as a software engineer is just a couple of steps. First, learned to code. And we'll just discuss how to do that to build a couple of portfolio projects for your resume. Especially if you don't have any internship experience or anything like that, maybe just discussed how to do that. The only thing that now stands between you and the job is getting an interview and parsing an interview. And if you've done all the steps up until this point correctly as a new figured out a proper learning system that allows you to keep going, to stay disciplined and learn to code, as well as then use those skills that you've learned to build some interesting projects. You should be able to get jobs as long as you apply, as long as you then figure out how to build your resume correctly. Which for that, I also have a video down below in the description, as long as you just apply to enough places in whatever location you're in, start getting interviews before long. And at this stage now that you've got interviews, the only thing that stands between you and the job is the coding interview. At least most programming jobs have a very similar structured according interviews. At least at the top companies, where they asked data structure and algorithm type questions. And I want to stress at this point, the only thing that matters for you getting a job even at the top companies is your performance in the interview. And this point after you've passed the resume stage, if you perform well in the interview, you are going to get the job before your interviews and before you apply, the only thing that you really want to be focused on them and the most important thing that you need to learn, data structures and algorithms and practicing, practicing, practicing to solo that the kinds of problems that they are going to ask you in the interview, if you just do this for long and I've introduced this approach it like studying for an exam at school or university. Eventually, you're going to learn it and you're going to be really good at solving these problems, but you need to know what you're doing. So specifically, you want to pick a basic data structures and algorithms wars or resource to teach you the theory or the while applying it as much as possible. And after you grind lead code until you essentially are really good at solving these problems is a very simple process, but it is a grind. The course that I personally did to teach myself data structures and algorithms. What's the most of the coding interview data structures plus algorithms on the zero to mosques recording course platform zero to mastery is essentially a platform full of coding courses that you can all access for one simple description. And yes, this one will cost money, but I think it's a very reasonable investment to make it a very engaging course that's going to teach you everything that you need to know from someone who actually did it. That's the one that I did on, that. I also completed the algorithms specialization on Coursera by Stanford University as well as algorithms by Robin Sedgwick textbook to really go deeper into the theory because it's a very theoretical resources. And while it probably goes even deeper into the theory that you even need to know, I'm of the opinion, He's never harmful to know more and you want to earn the side of knowing more rather than knowing less. So these are just some possibilities of resources that you might want to take and it might be boring as some points. You might be feel like this is very, very hard and very theoretical. Just take your time with a focus on understanding why these algorithms and why these data structures that exist, why we even have different data structures and then just practice implementing yourself. The crucial step here, those are priced properly, is to implement these data structures and algorithms yourself and do it multiple times. If you just do this, if you just apply all of them, if you implement all the data structures, if you implement all the algorithms, do a couple of times, folks on understanding what they do, why they exist, what they're running times are, eventually they aren't going to be ingrained into your brain. And then whatever problem you sold me you need to utilize these is going to be a lot easier. What most people do, which is this going in and trying to memorize as many problems as possible. That's really not a strategy that you'll want to follow. That there is this website called elite code. I just have the free version. You don't even need the premium. They have problems that are exactly the kinds of problems that you will be asked in coding interview. That's how these websites programs are designed to how many problems you feel like you can reasonably do in a day is every day you keep grinding. You start from the easy ones. Once you've got like these ones are too easy for you. You want to move into medium and then eventually to heart from what I know, to pass and junior level interviews, you can comfortably complete the medium level lead code problems. You are probably going to be good enough to attempt underpass interview. Obviously, the more time you put into it, the more you practice, the higher the chance that you're going to be able to pass the interview. That is how you tackle the coding interview. A lot of them also have a behavioral interview, essentially just Google a lot of questions that they're going to ask in interviews based on the company that you're applying for. Usually, if you're just excited about coding, you just genuinely interested and you can genuinely show them that you really want to learn a lot about coding. Those are the kinds of people that they want to hire. If you're able to show your passion, show your motivation. The show that you are a hard worker, a team player. Then you are the type of person that they will want to hire. You want to just practice answering this question, maybe do a mock interview with a friend or something. Then again, the more you practice, the more comfortable you are going to get at sort of explaining your story, explaining your motivation for this field and the company that you're applying for. And obviously, when it comes to the interview, just come very prepared. At this point, you're going to have a very strong understanding of not only coding, but also data structures and algorithms. There's just go into it with confidence so that in all its simplicity is how you approach the job hunting process. 13. THANK YOU - The Next Step in Your Coding Journey: You've successfully watched this class all the way to the end. Congratulations, you are now ready to embark on your journey. Or if you already embarked on your journey, I really hope that a lot of things that you learned, first about the actual learning process and second about the step-by-step path. I'm going from a beginner programmer to Job Ready were helpful to you if any of these was helpful to you at all, I would really appreciate a five-star review of this course. I would really appreciate that. And lastly, I just want to leave you with this. Coding is one of the most exciting skills in this modern day and age. It's also one of the most valuable skills you can learn. But the tech industry is all about embracing learning and constantly learning more and never being satisfied. Even after you get a job, you never want to stop learning. You always want to be learning skills obviously related to your actual job, but also adjacent skills. Never shy away from taking more courses on Coursera or watching more tutorials or figuring out new areas of the industry use the tech industry is just so rich with all different things that you could literally spend a lifetime learning this really, to me, the most amazing thing about it. And along with this, never stopped building. As a software engineer, you're going to be coding a lot. But to me, one of the most exciting things about coding, being able to build things for myself, built things that I want to be able to solve. Problems, that I want to solve a code that is really what makes coding so exciting for me. And I hope that you can as well become just as excited about this amazing skill as I am. Good. I hope you enjoyed this short class. If you want to see more for me, my YouTube channel, internet may coder. It's going to be down below in the description. I talk a lot specifically about the learning process, too. Hacks and techniques that I use myself to learn things fast and efficiently and properly. And all the things that I learned about my own journey of going from absolutely zero with no knowledge about coding whatsoever, to working full-time as a software engineer. I also make tutorials, specifically a lot of Python tutorials about automation projects, just the types of things that I personally like to build myself. Now, I'm also working full time as a software engineer. I also make a lot of content about the daily life of being a software engineer. And with that, I have a lot more classes and courses planned that I want to make regarding coding. So stay tuned for all of that. But I wish you a very fruitful coding journey. I wish you all the success and I'm sure we will meet again. Thank you.