Learning to Code is a Marathon, not a Race.
Tags: programming, beginners, webdev, computerscience
Published: 2022-12-28 05:30:00

You may be a student, a working professional or someone who's looking for a career switch, and might be interested in taking up coding to look for better opportunities. Whatever it might be and whatever situation you might be in, there's always an approach that you can take to help you learn better and grow faster.

I'm currently majoring in Electronics, and I've grown an interest in computer science so much so that I give more time to coding and learning things in computer science than building circuits and learning about electronics.

I was lucky enough to have mentors and seniors to guide me from the start of my journey in coding, and it helped me immensely to learn a lot in a very short span of time. And, I know that there are many out there who have the interest and the drive to learn, but very less to no guidance at all.

I'm writing this post to those who I think can find it useful in their coding journey and as a reminder to myself, something to my past self who would've wanted guidance along the way.

# Understand that there is no hurry in learning things. 🪁

When you're just starting out, there will be so many interesting things that you might come across and sometimes you'll even lose track of time when you get engaged in what you're doing.

Sometimes some things interest us so much that we dive into them without knowing what we need to have covered beforehand. For example, working in React is a lot better when you have a proper understanding of working with JavaScript.

You might dive into something advanced just to say that you know how to work with that particular framework or just fill up your resume with those fancy keywords.

<mark>Even if you're a fast learner, you cannot make a fully cooked meal without knowing how to turn on the stove.</mark>

Learning to code in a language comes after learning the fundamental concepts of coding. Once you learn the fundamentals, then you can pick up the syntax of any language.

## Here's a list of fundamentals that you want to go through before getting into a specific field.

* What is coding?
* Creating algorithms and flowcharts.
* Variables
* Data Types
* Operators
* Conditional Statements
* Iteration (Looping)
* Functions
* Scopes

# Don't just blindly follow the hype. 🏎️

Every few seasons, there's always a talk and hype about a new technology that people say will revolutionize the tech industry. And yes, some of them have actually changed the way we work. From Steve Jobs introducing the iPod, Bluetooth and wireless devices, to the way Jio made it possible to connect all of India to the Internet and right now, the way ChatGPT, an AI giving you the answers to your questions and Lensa creating completely fictional pictures of you.

There are also things that did start with hype but haven't been the talk of the town for many. Some new technologies like blockchain and web3, while promising still rely on the fundamentals of its predecessor web2 for lots of things.

<mark>If you are taking up coding just because of the hype around it, then you're getting into it for the wrong reasons.</mark>

It might be fun to go along with, but wait for a moment and ask yourself, is it something you really want to work on?

You might already be doing some coding in AI/ML stuff, but switching it in the middle for some hype out there just because everyone's on it might be more harmful than rewarding.

* Do your research,
* See what new things you have to learn,
* Look for opportunities,
* Talk with people who've already done something in that field,
* Would it be something that you'll enjoy doing?
    
Before you take the jump into something new, see if it's at a height you're comfortable taking the leap in and always have a fallback plan in case it doesn't work out.

# Tutorials are useful, but only if you're approaching them actively. 🦾

Tutorials are amazing and show you what you need to get started with a specific topic. And YouTube has no short supply of tutorials, you'll find almost everything that you'll need along with your journey.

Tutorials are highly specific to a particular topic, meaning it will most of the time cover only what is needed for the scope of that tutorial alone. They don't go much deep into the topic and you'll only have a surface-level understanding of what's happening.

Other than watching tutorials, you'll want to read the documentation for the technology you'll be learning and work on the technology by yourself in some projects too!

You can watch someone cook but you cannot get an idea of what they're adding without reading the recipe yourself. At the same time, reading the recipe will give you the theory, but not the practice in the kitchen. You'll need to make the dish numerous times before mastering it.

Similarly, you'll want to practice and practice and keep asking yourself why some things work the way they do. How you can use it? How you can improve it? And how you can combine it with other concepts that you learnt before.

# Build, Build, Build! ⚡

Making things by hand is the only way you'll learn how to use them at a later point in time. If you have some idea, regardless of how ridiculous or stupid you might think it is try implementing it by yourself and see where it goes.

If you have some personal problem and you have an idea for a solution that you can approach using tech, then implement that too. Even if you fail, you'll have learnt a lot of new things in the process, you'll be actively engaging with topics you've never heard of and at the same time, you'll be getting the hands-on experience of working with them.

At the same time, whatever you've worked on, put it up in GitHub or GitLab as proof of work, even if many might not see it, it's a visual proof of the work you've put in and it's something that will keep you motivated to keep moving forward.

# Join a Community and create a network. 🫂

Joining a community is probably the greatest thing you can ever do. Be it an online community or one from your own college or locality, you'll have the chance the connect with others programmers too.

Trying to do everything by yourself will be really tough and put a lot of strain on you, however, having people who are on the same journey as you can boost your <mark>morale</mark> and help build connections between you and those in the same boat.

Some benefits of joining a community are

* Access to all groups of people from experts to beginners.
* Access to resources that are approved by a large community.
* Making friends across the globe.
* Creating a network that will definitely help you get projects, clients, and even job opportunities.
* Share your work and get immediate feedback from the people on how you've performed and how you can further improve.

## Here are some of the communities that have helped me grow exponentially.

* [Think-Digital](https://discord.gg/y82cWZsrv6)
* [WebDevSimplified Community](https://discord.com/invite/7StTjnR)
* [Kevin Powell - Community](https://discord.gg/tZuexWn9fj)
* [Hashnode](https://discord.gg/hashnode)
    
# Get a mentor for yourself. ✨

Being a part of a community is really great and you can make it even better if you find yourself a mentor. A mentor is someone who is ready to help you reach your goals, guiding you and providing you with the right resources and opportunities as you progress.

It does not necessarily have to be someone who knows you or someone you know. You can follow the teachings and content of various experts out there, study what they did and try and see if anything works for you as well.

For me every book I read, the author is a mentor to me. In every video I watch, the speaker becomes a mentor. Anyone from whom you can learn and stick to what they say will also be quite beneficial for you.

## How can you find a mentor for yourself?

Finding a mentor can take a long time and prove to be a bit difficult. If you want to find yourself a mentor, someone with whom you can speak directly, then try doing the following things

* Search for people in the same field as you on social media platforms like LinkedIn, Twitter and Instagram.
* Take a look at their profile, it will be mentioned that they're ready to guide as a mentor, most of the time and/or they'll even have a history of helping out others.
* Reach out to them either in-app or through email, requesting that you would really appreciate their time if they can help mentor you too. Share your journey with them!
* Keep trying and you'll definitely get a response.
  
# Learn to Unlearn. 📦

Once you learn a concept, it does not end there. You might think of it from one perspective, but when you hear the same thing from someone else, it might sound completely different from what you interpreted and still be right.

Be open to others' interpretations as well, both of you may be right, and learning from someone else will always benefit you to understand things in a deeper flow than what you did before.

Even if you're familiar with a concept, you can always come back and learn it from a different perspective. I've seen that when I go back to the fundamentals, I learn some new properties that I didn't even know existed, or some things click again, why they are used at the fundamental level and that helps understand why some advanced concepts work the way they do.

Learning to unlearn, is something most of us don't want to or will not be willing to do. Why? For most, it can be their ego. "I already know this, so why should I do it again?". Others can be some constraints. "I don't have enough time for this!"

Whatever dialogue you might be telling yourself, it's not always true. You can always learn something by going back to what you've already learnt. Even if you do not, it will most certainly help enforce your understanding of a particular concept. It's like revising a topic over and over again.

# Pair Coding. 🧑‍🤝‍🧑

Find someone who you know, your friend, or someone else from a community with whom you've interacted frequently and ask them to pair code with you.

In pair coding, you and another person will meet up together, either virtually or in person and will work together on the same project or work on your own projects separately. This is really useful in the following ways.

* You'll have someone to be accountable to be with other than yourself (your pride gets in the way of not embarrassing yourself in front of someone else)
* The feedback you get is almost immediate.
* A pair of minds are better than a single one. You'll have someone to test your ideas and theories and you can test for someone else too.
* Working on projects becomes fun, you get to work together and work in a flow building it quickly.

When I started out coding, I had [Surendar PD](https://www.linkedin.com/in/surendar-pd-b725921b1/) as my coding buddy. I knew him back from school, and we bonded the most when we started meeting each other to code and create projects and that was after school ended.

# You're not an imposter. 🙅‍♂️

When you're learning something new, you're stepping out of your comfort zone. This can churn up a lot of feelings, especially those of fear because for the most part, you'll not understand some things and that's completely alright.

You might also feel like what you're doing and what you're learning might be a waste of time. Or even that you're not the right person to do it. These thoughts and feelings might seem so real and valid, but trust me they aren't!

When you're stepping out of your comfort zone, you also get something known as imposter syndrome. It's usually the negative voice that tells you all the bad stuff that might happen if you keep going. It keeps telling your that you're an imposter, that you're a fake for doing things you've never done.

It's tough not giving in to it. I still face it every time I learn something or when I try to teach something that I'm familiar with. Here are some tips that I found useful for not giving in to my imposter voices,

* Look back at your journey and see how far you've come. Often the voice tells you to give up and that you've reached your limit. Stop and take a moment to see how much progress you've made and appreciate yourself for it.
    
* Write down these thoughts and challenge them. Just because it's a thought or because you feel like it, it doesn't mean it's real. When you write down these thoughts, they will seem ridiculous the moment you read them and if not, you can always question them for their validity.
    
* Ask for help. Never hesitate to ask for help from your friends, your mentors and guides. They've most certainly gone through it themselves and can help you understand where your worries and disbeliefs stem from.

# Resources that helped me level up. 🚀

## Websites

* [MDN Documentation](https://developer.mozilla.org/en-US/).
* [W3Schools](https://www.w3schools.com/).
* [Free Code Camp](https://www.freecodecamp.org/learn).
* [The Odin Project](https://www.theodinproject.com/).

## YouTube Channels

* [Traversy Media](https://www.youtube.com/@TraversyMedia)
    
* [Web Dev Simplified](https://www.youtube.com/@WebDevSimplified)
    
* [Kevin Powell](https://www.youtube.com/@KevinPowell)
* [The Net Ninja](https://www.youtube.com/@NetNinja)
    
# Share what you learn, so others can learn from you. 📚

Just because you're a beginner or someone learning something new, that doesn't mean you can't talk about it. When you're learning something new, write or record videos about what you learnt and publish it in public.

Sure you might not have much interaction with what you share. And you might also get some critical comments. However, sharing what you learn can be more beneficial than you think.

* It helps enforce what you just learnt.
* What you share is proof of work. It shows that you're doing things and putting in the effort.
* It might help someone who's just starting out learn other things from you.   
* You become a guide and mentor for others the more you share what you learn.