You’ve decided to learn to code! Filled with excitement at finding a new career, you quickly sign up for a Udemy course and register at freeCodeCamp.

Feeling optimistic and eager, you sit down and start going through the material that evening.

In the next several weeks, you fall into a pattern of studying coding till late at night, then waking up early the next morning to go to work. But you’re starting to get confused by some of the concepts, and there isn’t anyone to ask for help.

The first stage of learning to code is the hand holding honeymoon phase. This is right when you start out, you are all pumped up to have so much motivation. You start some tutorials, and they are a piece of cake. Who told you that understanding python would be hard? They were stupid. That was easy!

As you do a few more tutorials you start to feel even more confident. This stage makes you feel like you are making significant progress. But then you are to start working on something that does not have a direct tutorial to give you an exact example of how to make it. And all of a sudden you realize, fuck… I know nothing.

So… Suddenly, you lose all motivation. And you give up on learning to code.

Not anymore.

After this video, you'll know how to regain your motivation when it comes to learning to code and make sure you don't give up along the way.

What's up, guys? Antonio here. Let me explain what is happening.

Here's a diagram that shows you how your confidence works as you are learning to program. The first stage on the left is the handholding honeymoon phase. You know how this works. It's when you just start out, you're pumped up and you have all the motivation. You watch some easy tutorials and they're a piece of cake. In fact, I'm doing this right now at my job, I'm learning some new stuff.

Who told you that Python would be so hard? They were stupid. That shit's easy, bro.”

As you view a few more tutorials, you'll start to feel even more competent, even more motivated. And, at this stage starts to make you feel like you're making progress. And that's where it gets tricky. It's only a feeling.

But then, you take a leap from that stage, and you start working on something that is not directly solved by the tutorial, meaning a feature that you haven't yet done yet, nothing exactly like the tutorial and all of a sudden you realize, “Fuck, I know nothing.”

Now, this is the stage known as the desert of despair. This is when you forget why you started, and all that knowledge that seems so easy that you learned in tutorials just is in one ear and out the other, and you have no idea where it went. All of that motivation seems to just like literally go away, like you can't find it even if you try it.

Now, this is the area where most of you get discouraged and give up, but this is where you must apply the principles that I'm going to teach you so you don't get caught and give up.

That next stage is called the upswing of awesome, and all you need to do is hold yourself over with motivation to get to that stage. We need to get you from desert of despair to the upswing of awesome. This way, you can actually become the programmer that you want to become. This is where we've lost so many people that had the potential to become amazing programmers simply because they didn't push through.

I was once at this stage, and I have fallen down at this stage multiple times, but I figured out how to push through. So, our goal is to get you to the point where you are making visible progress and actually can see the progress, and that will feed into more motivation to keep learning.

So, here are the two things that you can do to reduce your frustration and help you stay motivated. First thing is understand why you started programming to begin with. Now, this can be done by asking yourself a series of questions. First, why do I want to learn this programming language? Two, why does this programming language matter to me? Three, how does learning this programming language impact my life and my career as a developer? Four, how does learning this programming language impact the life of my friends, my family, and my coworkers? Five, is learning this programming language, preventing something bad from happening in my life? Six, what do I fear if I do not accomplish learning this programming language?

Now, what I want you to do is type up the answers to these questions, or write them out, whatever's easier for you. Put them on a piece of paper where you can see them regularly. When you remember why you started, and it might be to get an entry level job or it might be to become a senior developer or it might be to learn a brand new programming language again to a new type of program. When you start, it's often easy to remember why you started, because you literally decided to start right after you figured out why you were going to, so it's fresh in your mind. But after a few days, after a few weeks, and especially with the lack of motivation you get from learning because you're not making progress, this is where most of you will drop. This is where most of you will fail.

So, if we can constantly remind ourselves of why we're doing something … now, I'm not talking to surface level, I'm talking deep passionate reasons why you are learning Rust, or why you are learning Go, or why you are learning programming in general, or web development, or VR, whatever it is. For me. I do this with my other goals that keep me focused on.

Now, the second thing I can give you to help you get motivation or stay motivated while you've lost it when learning to code is to break it down. When you are learning something new, it is so damn easy to literally just look at the problem, be overwhelmed, frustrated, and have no idea how you can actually solve it. Especially when you're learning alone, it's so difficult to see above where you're at, to see that it's possible to be further than where you are.

Being stuck in this stress and overwhelm then emotional environment is not good. We need to get ourselves back to a logical state so we can simply solve the problem ahead of us, right? That's what programmers are for. Unfortunately, as programmers, sometimes we aren't good at solving our emotional issues. So, when I instantly notice that I'm feeling the frustration or anxiety or overwhelm or lack of motivation, I know that I need to break the problem down and make it clear as possible.

You need to be clear on what and why you are doing something. That is always the first step. Because if you aren't, those emotions will come along of overwhelm and frustration, and you won't know what to do.

Even if you have been programming for 20 years, breaking it down to the line level, meaning as low as one line. What do I need this one line of code to do? That can literally change everything for you. Most people will try to look at it at the function level or the app level or the class level. Do not look at it that high. Instead, get lower, get deeper into the weeds, and solve each little bite piece by piece. Find out which lines are causing the exact problems, and fix them.

With these two things, hopefully, with the lack of progress you're feeling in terms of learning, you will be able to at least remember why you started and break down the problem, so you can get to that stage of upswing of awesome where you're actually learning and making progress on your own.

And I promise you that stage is not that far away. You just need to keep going. Make sure that you consistently apply these two principles by remembering your whys every single morning and night, and making sure that you break down the problems you're facing so it's so clear what you need to do, and all that's left is code. All that's left.

Remember, is videos just a waste unless if you do something. Get off of YouTube and start doing this. Start solving that problem, becoming the Rust programmer you wanted to become, or the Node programmer you wanted to become. Okay? Don't hold yourself back by getting stuck in all this information. Instead, go do it.

I will catch you guys in the next one. Comment below. I'd love to talk to all of you and help you with any problems you might have.