Aug 13, 2020

3 min read

My Data Structures and Algorithms Learning Journey (Part 1 of n)

In Big-O notation, my learning journey’s time complexity has been O(n²). I am out to optimize and bring that closer to O(n•log(n)). /badjoke

I completed my full-time software coding bootcamp at the end of January 2020. The world has been transforming in the months since. So, I am now setting out to transform my coding skillset through deepening my understanding of data structures and algorithms.

Why data structures and algorithms?

Long story short, I learned how to code and deliver on MVPs in coding bootcamps. Mainly, I built web applications with clean interactivity and snazzy features. What I did not learn¹? Well, some tradeoff was made by focusing on the “how” of building things and skipping past deep-diving into the “why” behind the particular choices.

For example, I built this really cool and useful chatbot virtual assistant I named “Ok Dog” to help “fetch” your common everyday requests, like news and weather. However, I used free solutions (i.e. hosting, external APIs, Google Cloud Platform) and prioritized finishing the application rather. I missed out on learning how to design and optimize the code for millions of users.

One of my top motivations for learning data structures and algorithms is to gain an understanding for how to tackle problems faced at scale. I do hope “handling massive amounts of user traffic” will be a challenge that my future employers and I will have to face!

Plus, I previously dipped into sorting algorithms through another web application I helped built — Algos. Though I implemented insertion sort and merge sort, I am more than ready to expand and strengthen upon my understanding of programming fundamentals.

An algorithm visualizer built during my software coding bootcamp. Credit to teammates: Gordon Lanza, Li Xie

Why start now?

I currently have relative stability after a period of rapid transitioning, including moving several times. If a global pandemic has taught me anything, it is that we truly only have the present, so I should not hold back and wait to learn. Carpe diem!

Another factor is that learning about data structures and algorithms will unlock my ability to solve problems that are currently beyond me. I find that programming is often about pattern recognition, and this exposure will give me problem solving templates and roadmaps for the future. I do plan on moving beyond easy Leetcode problems to medium and hard ones!

What’s the plan?

I sat down with a Google software engineer and crafted the roadmap below to button up on computer science fundamentals. The goal is to finish up before the end of the month.

With prior commitments, I am unable to devote 100% of my time to learning. However, I believe in setting hard goals and working backwards to figure it out how to make it possible:

There it is. Thanks for following the start of my journey. I look forward to keeping you updated on my progress!

[1] I highly recommend reading this article by fellow bootcamp alumnus Angus Morrison on what he wishes coding bootcamp taught him.