The Analysis Paralysis of Learning to Code...
Tags: beginners, programming, learning, productivity
Published: 2021-12-09 12:12:45

> Tutorial Hell, am I right?

#Introduction
Gone are the days where “geek” or “nerd” was used as a derogatory term. Coding is a fun hobby and also a very worthy skill to have in this rapidly growing software industry. The insatiable want to build things in developers has created so many amazing things that we don’t even notice while using them daily. You are reading this blog post on your device because of some vision that some person had! Big tech giants like Google, Facebook, Twitter, Netflix, etc have completely revolutionized this world digitally. The Information Age is over, we are stepping into the Augmented Age now and the demand for developers is more than ever.

![Code Stock Photo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66yp4d6o9wkbdi4ua5ue.jpg)

Let’s say you have decided to learn to code, maybe for a job or just for the sake of it. Maybe you have a fun idea that has the potential to be the next big thing, or you just want to build things for fun and help the community that is helping you to learn to code, maybe you want a lucrative well-paying career working at one of the FAANG companies. Whatever it may be, the growth opportunities are endless, and peeking into your distant future self, imagining yourself as a Software Developer sends a high jolt through your mind. And guess what? You just finished your first programming course ever in JavaScript, Python, C++, or C and have the fundamentals down. You realize that the list of technologies to learn is endless. That’s okay, it seems scary but you buckle down and are ready to move on to the next thing! But uh-oh 😕, after deciding what you want to learn next, you’re gonna have to decide “where” to learn it from. That part almost always leads to decision fatigue and now you’re tired and demoralized before even showing up at the starting line.

![Chill](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jitgfnm8cg6k9769c7vp.jpg)

Have a cup of Java ☕ (Pun intended!) and meditate. This is a normal thing to happen to developers, especially those who are just starting to learn. It feels more difficult to get the ball rolling but once you have relevant experience, you start to understand how the learning process works and that you’re not alone in running into these hiccups.
I used to spend most of my time trying to find a variety of things to learn rather than simply sticking to one of them and taking that first step. Even now sometimes I am usually riffling through [r/learnprogramming](https://www.reddit.com/r/learnprogramming/) to find something new to learn, reading articles at [Hacker News](https://news.ycombinator.com/), or working on personal projects. It did not take me that long to find out what I wanted to learn, especially now with so many communities out there for programming and computer science, developers are always helping out each other. But the task of finding “where” to learn it from was hellish. A simple internet search — “How to learn to program” will hit you in the face with books, courses, boot camps, projects, and so much more stuff when you barely only need about 20–30% of that stuff to get going. So how should one navigate the ton of material that is available on the web to make the most out of it?

## 1. Less is More

![Minimalism Developer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cb4qi1eqvqxnzrcdx4z6.jpg)

> “When given too many choices, people tend to worry that there’s something better out there than what they decided on.”
― Fumio Sasaki

Way before I started learning, I started accumulating stuff thinking that when I’ll begin, I’ll have a lot of stuff to study. But in doing so, I was only delaying the process, partly because I was intimidated by programming and also because I never really felt ready because of my scanty collection of programming assets. Yeah right, “scanty”, says me while downloading yet another e-book and buying yet another course on Udemy which I might never finish.

So make sure to focus on only a couple of the best available assets out there and steer through them while learning. My go-to path for learning any particular thing usually consists of what I call a **“Programmer’s Knapsack”** containing 1–2 books, 1–2 BootCamp courses ranging anywhere from 3 hours to 30 hours depending upon the subject, and a couple of youtube videos related to that for refreshers. Even this is more than enough than what you usually need (I always tend to learn a little “extra”). Books help the most in laying the foundational knowledge, BootCamps or courses help in making the person feel more confident through projects and exercises and giving a “classroom” feel and finally, youtube videos save a lot of time while still covering the roots or every time you want to revise your learnings.

I have provided some online resources to learn coding at the end of this blog post which helped me a lot and still does.

## 2. Don't Juggle as a Beginner
Now, this might sound contradictory to my statement above that we should study from various mediums like books, courses, and some YouTube videos. But by “Don’t Juggle” here, I mean that if you have just started to learn as an absolute beginner, then make sure to finish whatever material you started learning from first before moving on to another. This happened to me where got bored from a book after a while and I shifted on to a course on Udemy. But after completing 50% of that course I realized that I already knew these things from the book, the only thing I needed was the practice from the exercises and making projects so instead of watching the course videos, I could have used that time to solve problems and improve my proficiency.

![Undecisive Meme](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kl1q1m0avrxy1tghrnbt.jpg)

The *kernels* (again, forgive me for being punny) of programming principles remain the same no matter where they are learned from. So that’s why it's important to finish one resource and make sure you understand everything in that before moving on to something else. You will learn in a much better way and have a great feeling of closure and confidence after you complete it.

Note: If you’re already an intermediate learner then you already know enough to pave your path ahead for learning! 👍

## 3. Finish the Projects
Almost every method of learning, be it YouTube, Udemy, Edx, etc or Books usually ends with an interesting project. It’s a good way to cement your foundations and give you confidence. Projects help you a ton in bringing everything together that you have learned. Plus, an impressive enough project can do wonders for your resume and make it stand out. BUT, these projects are usually guided by the authors so that you can code along with them and cross-check your mistakes which you will make for sure. I am not against this method of learning but a better way to follow this step would be:

- Try to create their given project from scratch using your knowledge and all that you have learned. See if you can do it without the author’s help. If you can, voila! You are a super talented genius.

- If you get stuck, do some googling and try to find and debug your mistakes. A big chunky part of a software developer’s time at his/her job is spent on stack overflow.

- If it is still proving to be difficult only then check their solutions and code along with them. Because you don’t want to spend too much time sitting on a problem. No one knows the answers to all the problems, the fact that you are willing to learn makes you better than most people.

All these steps will give you a much better idea of how developers in the real world work and solve problems. That’s what we do, solve problems, ask for help, slack off, watch anime, and play games 🎮.

## 4. Don't be a Completionist
This is kind of an extension to step 2. Once you have finished your first resource and have the basics understood, you’re going to realize all the “beginner” resources on the internet will always put their focus on those same basics, those loops, those if-else conditions, those functions, this is all that programming comes down to. So, you only need to study just one thing completely from start to finish to grab these concepts. Mastering them, however, depends on your self-practice. After this, If you have the time it’s your choice if you want to start from scratch again but make sure you do have the time.

It’s bonkers the number of resources out there, so many that you can study all your life and still feel that you don’t know enough. Your goal is not to consume everything but to know enough so that you can excel at your job and keep building wonderful things. **Bjarne Stroustrup, the legendary creator of C++ ranks himself a 7/10 at best in it!** If you don’t have the time to start again, a solution to this would be to kind of just do a quick go-through of the basics whenever you pick another resource and then pay attention to the more interesting exercises and projects.

![Code Repeat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ka83yxm480wys3ueyqc.jpg)

Even if you have changed the language or subject, you will save a lot of time using this method because at the core of computer science, the concepts are the same. Except for some basic syntactical techniques, most of the time you won’t have to learn anything bulkier if you’re switching to another programming language.

Learning to code is a demanding skill but keep in mind that you will also learn googling which helps all the developers in getting unstuck whenever there is a hurdle. So don’t beat yourself up for not remembering everything. We’re all humans here and we learn by making mistakes.

## 5. Know Your Purpose
The last tip I can give to you guys is that never forget why you are learning to code. Knowing how to code itself is not an achievement, in the end, it is just a tool to help you either solve a problem, build a project or automate some task to make your life easier. With enough practice anyone can easily learn to code but what after that?

- **For Students:** Coding is basically like training in the gym, the more you do it, the more you will get stronger in it. So, follow the tips above if you feel like you are getting lost and you'll avoid decision-making stress like a pro.

- **For Career Makers:** Start approaching and researching job roles on LinkedIn, Glassdoor, and career websites for the companies. The right position will find you!

- **For Hobbyists:** Keep expanding your skills and building mind-blowing stuff. I have seen people coming from construction, law, and finance backgrounds turn towards coding and make amazing things!

So this was my article that included some tips on how to avoid analysis paralysis when it comes to learning code. I hope it helps everyone, especially the beginners who find it hard to swim in the tsunami of materials available online.
Every day, new websites and resources are popping up for beginners to learn to code. I have listed below some of the most popular places to learn to code that have helped me a lot in my journey and millions of others.

1. [Coursera](https://www.coursera.org/)
2. [Edx](https://www.edx.org/search)
3. [Udemy](https://www.udemy.com/)
4. [FreeCodeCamp](https://www.freecodecamp.org/learn/)
5. [Open Source Society University](https://github.com/ossu/computer-science)
6. [Teach Yourself CS](https://teachyourselfcs.com/)
7. [The Odin Project](https://www.theodinproject.com/)
8. [CodeAcademy](https://www.codecademy.com/)
9. [MIT Open Courseware](https://ocw.mit.edu/index.htm)
10. [Reddit — r/learnprogramming](https://www.reddit.com/r/learnprogramming/)

That’s it for this article folks! Make sure to check out my other article too — [“The Beginner-friendly way to learn from FreeCodeCamp on YouTube”](https://dev.to/thepiyushmalhotra/the-beginner-friendly-way-to-learn-from-freecodecamp-on-youtube-37g7). Let me know if I can make some additions or changes to this article or if I missed something important. My objective for writing these articles is always to give back to the community that has aided me tremendously to become a good programmer.
Connect with me on [Twitter](https://twitter.com/Ipiyushmalhotra) or [LinkedIn](https://www.linkedin.com/in/thepiyushmalhotra/). And stay tuned for more stuff ahead! Ciao!