How I’m Learning Data Structures and Algorithms as a Newbie
Tags: beginners, algorithms, learning, webdev
Published: 2023-01-28 08:47:09

Data Structures and Algorithms is one of those things that you know you need to learn but never plan for it. Or just start and give up along the way because, let's be honest, DSA is tough. However, DSA can help in sharpening problem-solving skills, which, ultimately, can help you become a better developer. 

And, unfortunately, when it comes to interviews, problem-solving skills are mainly prioritized—furthermore, companies test that by using DSA questions. In light of this, I have decided to teach myself DSA from the basics. Here is how I am doing it. 

## Me vs. Data Structures and Algorithms

My interest in DSA started when I joined a certain boot camp last year. It was mainly about DSA. I had already done a DSA unit at my university, but it was several months earlier. Of course, I had already forgotten many of the concepts. 

I relearned the basics at the bootcamp, and then I stopped revising the same, and that's how I almost forgot everything again. After doing some research, I realized that developers who are good with DSA regularly practice. 

They don't just learn DSA and move on to other things, then come later and still remember everything. Well, this is no surprise, it applies to pretty much everything. To apply the same I'm using so-called [spaced repetition](https://en.wikipedia.org/wiki/Spaced_repetition), where you repeatedly study difficult concepts until they stick.

## How I'm Studying Data Structures and Algorithms

Here are my approach to learning DSA:

- Setting aside an hour a day

Usually, I study DSA first thing in the morning (after breakfast and the usual preparations, of course).

- Reviewing what I learned yesterday first thing in the morning

Every day, I start my day by reviewing what I learned yesterday. If I tackled a problem, I'd try to remember how I solved it and write down my solution on paper. 

If I didn't solve the problem and looked up the answer, I'll still try to tackle the problem again individually to see if I understood the concept. This process might take a few minutes, or worse, the entire hour!

- Spaced repetition

After a few days, I'll review a concept I learned or a problem I tackled to refresh my memory. 

So far, I'm pretty happy with the results. I'm finally getting the hang of solving DSA-related problems. 

## Resources

Here is a list of resources I'm currently using:

1. Cracking The Coding Interview by Gayle Laakmann McDowell - This book has a large section dedicated to Big O. Also, it goes further to teach about different Data Structures that you'll find in interviews.
2. [JavaScript Algorithms playlist](https://www.youtube.com/playlist?list=PLC3y8-rFHvwiRYB4-HHKHblh3_bQNJTMa) - Codevolution/YouTube
3. [JavaScript Data Structures playlist](https://www.youtube.com/playlist?list=PLC3y8-rFHvwg6nsAOfC5Is18KB2DrVOJy) - Codevolution/YouTube
4. [Neetcode](https://neetcode.io/roadmap) - A structured way for tackling essential Leetcode questions (with video solutions (in Python) and code written in several programming languages like JavaScript, Java, Python, and C++)

---
_Notice a typo, error, or additional information worth sharing? Comment below. I'd love to hear your feedback._