I know that sounds strange. The thing is, there are so many resources for learning to code that it can get easy to feel lost and overwhelmed. But approaching your coding education as if you were learning a different language will give you a helpful framework to operate from.

Using a framework will allow you to structure your learning progress. This will provide you with direction, milestones along your path, and a destination at the end.

One of the main advantages of this technique is that it divides up your path. From beginner to advanced stages. Differentiating these stages will help you make more sense of what you are doing.

For example, knowing what level you are currently playing at. That knowledge will set your expectations. If you’re still at the beginner stage, don’t feel that you should achieve intermediate or advanced skills.

Having realistic expectations will help keep you from getting discouraged or even quitting.

Sound good? Let’s start out with a fun little exercise:

What’s your ultimate goal?

When you’re learning a language, the goal isn’t about learning a list of vocabulary, words and random phrases.

No one tries to learn a language for the sake of learning new words. There are always some kind of real-world application in mind.

You want to be able to do something useful with it, right? You even had a specific goal in mind. It might be to hold a fluent conversation with someone, to travel to that country, or to read a book in that language.

Learning to code should be the same way.

You should have an ultimate goal other than “learning to code.”

It could be to find a new full-time job, to sell a mobile app, or to work for yourself. That goal will give you the motivation to keep learning even when it gets hard.

It will be your true north as you navigate the world of programming.

Stop reading this article for a moment. Take a minute to consider what your ultimate goal is in learning to code.

Why are you doing this?

What was the initial motivation that got you started down this path?

Write down your goal on a piece of paper.

Put it somewhere where you will see it every day — like next to your computer, or on your bathroom mirror.

When you read that note, you’ll be reminded of why you’ve chosen to start your journey. Remembering your core reasons will give you the encouragement not to give up.

Got your goal written down? Good.

After you finish reading this article, leave a comment to share what your goal is with the Medium community.

We can always find encouragement in hearing someone else’s story. I’d love to hear yours.

Now, let’s move on to getting fluent in coding!

The first language is the hardest

Focus on learning one thing at a time

There are many spoken languages in the world (over 6,000 in fact!) — there are also many programming languages that you can choose to learn.

If you’re just starting out, I wouldn’t recommend that you learn Python, Ruby, JavaScript, React and Java all at once.

That would be impractical.

You wouldn’t try to learn Chinese, Spanish, German and Portuguese at the same time, right?

If you’re trying to pick your first language to learn, don’t stress! Pick one and learn it to a reasonable level of proficiency.

This first language will be the most difficult to learn because you are not only learning a language. You are also learning how programming works.

Once you get good at one language, it will be easier to learn your second and third languages.

All programming languages have common principles that run through them.

And once you learn those principles, it’s more a matter of learning the new syntax and vocabulary, if you will.

Each language has its own quirks. But once you have laid the foundation of learning programming, it will be easier to pick up more skills later on down the road.

Now that you’ve picked your first language, let’s start at the first stage in your journey:

Beginner level

Hello, world!

What’s the first thing you learn how to say in a foreign language? Usually, it’s the most basic greeting, how to say “hello.”

Coincidentally, learning how to output “Hello, world!” is often the very first thing that you learn how to do in a programming language.

After learning greetings, you move on to memorizing the vocabulary and basic grammar.

In programming, you’ll learn concepts like variable types, methods, syntax, and how project files are structured.

It may not be all that fun to manually learn functions and to get stuck on minor syntax errors. But mastering these building blocks will give you the skills to keep moving up.

At this beginning stage, you are probably going to make a lot of mistakes. No, you will make a LOT of mistakes. But that’s okay!

The point here is not to learn something perfectly before you try to use it.

In fact, making mistakes is a good thing, because you can learn from those mistakes. If you’re too afraid to risk doing something wrong that you don’t try, you will hinder your own learning process.

The key here is to make mistakes, to experiment with the new things you’re learning.

Here’s one way you can experiment:

If you are going through a coding tutorial to learn a language, follow along with the lessons like usual.

But then take some time go off by yourself and play around with the code in your editor.

See if you can break the code you’re working on, and try to understand how and why it breaks.

Then try to rewrite the code yourself from scratch, only looking back at the lesson notes when you get stuck.

Experimenting like this will demand an up-front investment of time and energy. But it will pay off in the long run.

By playing around with coding concepts, you’re working out what makes them tick. This will help those skills to stick in your brain better.

You can make this an intrinsic part of how you approach new ideas no matter your skill level. This technique of doing experiments as the path to expertise was the topic of a recent post by Michael Simmons.

Intermediate level

Putting the pieces together

For foreign languages, this is where things start to get more fun. The more you know, the more things you can do with your new language.

You’ll develop conversational skills. You will be able to understand a good chunk of what you’re reading and hearing in that language.

You might even be able to make friends with native speakers of that language. Thanks to online language learning resources.

In programming, the intermediate level means that you are starting to make sense of the principles of the language and what you can do with it.

You still need to keep working on the basics. Read books, go through tutorials, and experiment. But you are starting to build a framework that you can continue improving upon over time.

You can also learn to interact with other experienced developers in communities like GitHub. In fact, studying how other people are programming can help you immensely.

For example, you can look at different GitHub repositories that interest you. See how other developers solve particular problems. Once you study a particular repository, you might notice a possible fix for an issue, and try to submit a pull request.

Even if the owner doesn’t accept your request, you will still have gained a bit of experience working with the code. Keep trying, and keep learning.

You can also get help and support from other programmers from online forums. Like Stack Overflow, Facebook groups, and Slack channels.

There are a lot of people out there that are more than willing to help you figure out a bug. Then point you in the right direction. There’s a worldwide community of people all learning how to code out there!

Hitting the slump

Now I have to break a bit of bad news to you. At some point in your learning, you’ll feel like you’ve plateaued.

You won’t be on the steep side of the learning curve anymore. But you may feel like there’s so much more distance to cover, with no end in sight. Let’s be honest, it sucks.

But, don’t despair!

This slump is a normal part of picking up any new skill.

At the very beginning, you’ll make a ton of progress and feel like you are gaining skills.

But, as you get better and better, the more intermediate and advanced skills are more difficult to learn. Because, they are more advanced.

Mastering any skill will always take much more time than becoming an adept beginner.

If you feel like you’re stuck in this slump, don’t give up.

Be patient with yourself, and understand that it will take more time to keep moving up in skill.

Try not to burn out, and don’t put too much pressure on yourself to excel and be perfect.

Most of all, now is the time that having a strong support network, in real life and online, can help you. Reach out to others who may be in the same boat as you and swap stories and encouragement.

Advanced Level

“Hey, I think I might actually be kinda good at this!”

When learning a foreign language, becoming proficient is the destination that most people strive to reach.

Proficiency means that you are pretty confident that you can express any idea or feeling in that language. The way you want to. You are practically fluent at this stage!

Hitting the proficiency level in a coding language or technology feels good.

Although you may still struggle with impostor syndrome from time to time.

You will feel more confident in your own skills and your value as a programmer. You will be able to hit almost anything that clients or bosses throw at you.

You know that even if you don’t know exactly how to do something. You have the tools to be able to research (Google) and figure out a solution with time.

But, now is not the time to rest on your laurels.

Programming is changing and it moves fast.

You need to continue honing your skills. If you stop, your hard-won proficiency will start ebbing away.

Becoming complacent and stagnant will be a death knell for your career as a programmer.

The good news, though, is that by this time, you’ve gotten pretty good at learning.

Having to learn a new language, framework, or tool won’t take you as long as it used to. And you might even enjoy the process!

What’s your ultimate goal? Leave a comment below…

I hope you’ve enjoyed reading this article about how to learn programming. Like I said above, I’d love to hear what your programming goal is, as well as what you’re learning right now.

Want more?

📃 Read more tutorials on my blog, coder-coder.com.
📮 Sign up here to get emails about new articles.
📸 Join 25,000+ others — Follow @thecodercoder on Instagram.
📺 Check out coding tutorials on my YouTube channel.