Lareen Melo ✨

Posted on

# On a New Challenge: Learning Algorithms and Data Structures

Being a software engineer and not being good with algorithms and data structures is a real struggle. Honestly, it's a nightmare for me. Especially when you're surrounded by really competent engineers who just seem to have a knack for these topics (trust me, it's not my imposter syndrome talking, I swear).

Whenever my fellow engineer friends would start talking about efficiency, and complexities and trees I would just feel so out of place. As if not knowing what a bubble sort is, as a software engineer, makes you a pony in a land of majestic unicorns and elegant horses.

### Something changed

Now that I’m in a stage in life where I have to interview again, not being good with algorithms and data structures cannot be my reality.

It all comes down to the fact that I need to become comfortable with the problem-solving process, learn these topics and become more aware of how I build my code so that I can stop flunking technical interviews.

### The plan

I’ve crafted this 3 months plan where I’ll be re-learning a few concepts from college on a deeper level. These are the topics and the order in which I will work with them:

1. Arrays
2. Strings
4. Stacks and Queues
5. Hash Tables
6. Dictionaries
7. Trees
8. Heaps
9. Priority Queues
10. Sorting Algorithms
11. Time Complexities(1)

(1) The reason I'm reviewing time complexities as the last topic it's because I've already reviewed them and I will be consolidating my understanding of algorithmic analysis while working with the rest of the topics first.

### Resources

For resources, I will use a combination of books and online websites.

Books:

• Cracking the Coding Interview
• Introduction to Algorithms (Third Edition)
• The Algorithm Design Manual (Second Edition)

Websites:

### Consolidation days

To consolidate my learnings I will pick a day, after reviewing, to attempt implementing data structures and solve as many problems as I can using a simple problem-solving approach (at least for the first stage of the challenge).

The simple approach is basically to focus on solving the problem before coding, my mindset should be: "writing the code is the easy part".

• C++

### Final words

My end goal is to improve my problem-solving skills and CS knowledge of algorithms and data structures.

If you have any suggestions, words of encouragement or tips please let me know!