Lessons I learned during my first year of programming
Tags: beginners, webdev, programming, codenewbie
Published: 2021-11-11 21:09:59

I started programming in June of 2020, and have grown so much throughout this process. I wanted to share the lessons I learned during my first year of programming.

## It's ok not to listen to everyone's opinions 
One of things that I realized early on is that everyone has an opinion. 

The tech world has a lot of strong opinions on what you should do and the right way to do them. This creates a lot of  conflicting advice for new developers.

It's ok not to listen to everyone's opinion and focus on choosing the advice that works best for your situation.

Here is a good example of that.

I remember a discussion on Reddit where a guy was conflicted because even though he loved his CS degree, people online were telling him that his degree would be useless for web development.

He was seriously considering dropping out of his degree program to pursue the self taught route even though he had one year left to go. 

I just remember thinking, "OMG no! Please don't make such an important life decision based on advice from complete strangers."

At the end of the day, you should feel comfortable listening to advice and applying it to your situation if it makes sense to. 

But please don't blindly follow people's advice just because they speak so passionately about it. 

You have to remember it is just someone's opinion. Not fact. :smile:

## Fail forward 
When I first started, I was very conservative and did not want to take risks with my code. I was afraid to make mistakes and see error messages in the console.

That is probably one of the reasons why I was stuck in tutorial hell for a few weeks in my learning journey. Tutorials created a safety net for me and walked me through each step of the process.

Once I started to take more risks and try things, then I felt like I was learning more. That approach forced me to read error messages, research more, read through documentation and ask more questions.

Sometimes, you need to fail a few times before you arrive at the correct answer. Then you can look at your failed attempts and understand why it didn't work. 

Also, when someone else is struggling with a similar issue, you can share your tips for debugging it. 

## Know your learning style
Everyone has different learning styles and it is important to know what works best for you.

During this learning process, I quickly realized that I don't do well with video formats. For some reason, I tend to zone out after 15 minutes of a video course.

I started using articles and documentation for my main source of learning. I felt I could retain the information better through the written form.

If I had to watch a video, I made sure to pause it every 15-20 minutes just to absorb what I was learning. Sometimes, I would also take breaks to practice the examples provided in the video.

It is really important to identify your learning style so you can choose the appropriate resources. 

## Some concepts take a while to understand and that's ok
I think one of the hardest parts about learning, is struggling to understand a concept.

The first time I was introduced to recursion, it didn't make sense to me at all. People just kept saying it was a function that calls itself.

My reaction was, "But how?" :laughing:

I remember reading through many articles and kind of understanding it. But it wasn't until I watched a video by [CS 50's Doug Lloyd](https://www.youtube.com/watch?v=mz6tAJMVmfM) where it finally clicked for me.

The way he was able to explain what was really happening "underneath the hood" made so much sense to me.

While you are learning, it is completely normal to struggle with certain concepts. Sometimes it take a few tries before the light bulb goes off. 

## There is no benefit to learning to code quickly
I have never been a fan of the learn to code quickly narrative.

There are so many videos and articles talking about how you can learn to code in 3 months and land a job. Most of the time this narrative is pushed by those with an agenda to try and sell you something.

I see no benefit to rush the learning process because you are going to end up creating serious holes in your education. 

Plus, your boss isn't going to pay you more money because you landed a job in 6 months versus someone who took longer. 

I found that it was better to take my time and build a healthy solid foundation instead of rushing through things. I think that has served me well in the junior developer role I have now.

## Have the courage to define your own success
I think a lot of people are heavily influenced by cultural or societal expectations when it comes to careers. 

You shouldn't feel pressured to take a certain type of job just to impress your friends and family. Just because you are not interested in pursuing a FAANG job doesn't mean you won't have a successful career.

There are so many options out there and you should feel comfortable defining what success means to you.

I love software development where I get to contribute to great projects and tackle new challenges. But I also love to write technical articles. 

I want to create a career that incorporates both of those things.

Maybe you want to launch your own startup.
Or you want to be a successful content creator and educator.

Or maybe your dream really is to work at FAANG.

Whatever your ambitions are, you should be able to pursue a path that makes sense for you.

I hope you enjoyed this article and love to hear your thoughts in the comments below.