Day 76: Cracking Open “CTCI” Again

Starting back up my data structures and algorithms (DSA) studies. I am going back to finish reading through the book, “Cracking the Coding Interview” by Gayle Laakmann McDowell. This time though, I am going to move in contrast to the advice in the book. I will be reading through the book in close to it’s entirety with the intention of gaining as much exposure to the material as possible. I am not looking to comprehend or gain expertise but rather, I am just focusing on becoming more comfortable with what different types of problems look like and what the vocabulary associated with those problems might be.

The reason as to why I am taking this approach is because I previously found little success with the book’s recommendations. The book advised me as the reader to try solving each problem on my own before looking at solutions. When following that advice I found myself spending hours on problems, struggling to find any solution. This was highly unproductive and a huge de-motivator. I felt like I was just terrible with algorithms and that others would find more success. So, this time around I want to try my own approach.

I am not a quick learner when it comes to the basics but I have found that once I have a good grasp of the basics I am pretty quick at picking up more complex topics. I guess I could say I am somewhat of a slow starter. I don’t mind that reality. I was once horrible at math but once I grasped the concepts for each topic I did really well with the most difficult word problems during examples. I want to approach DSAs with a four step plan:

  1. Step 1: Gain exposure over the entirety of the material (Establish notes for each topic – not diving into each topic too deeply)
  2. Step 2: Read through example questions and solutions (Take notes on the space and time complexity, data structures used, algorithms used, and the associated vocabulary for the problem)
  3. Step 3: Practice similar problems until I am comfortable with each particular core problem type
  4. Step 4: Practice solving random problems mixed in with core technical interview problems to become more flexible and re-enforce my core problem solving skills when tackling any type of coding challenges

I hope that this helps me stay engaged with the topic. I will be continuing my backend development studies while I am just to keep things balanced. I really think this might be the path that works for me. If there is one thing that I have learned with all this self-study is how I like to learn.

TLDR;

Okay, so here are the highlights of what I did:

  • Data Structures and Algorithms (DSA) -> Started reading through the book “Cracking the Coding Interview” by Gayle Laakmann McDowell again. Going through the technical interview section. I am just reading through sub-sections on how to approach coding problems in interviews. The advice makes sense. I definitely could have used it in some past coding interviews lol.
  • Backend -> Started going through the material on API development with Node.js from The Odin Project’s backend development course. So far so good. It referenced CORS issues, which is a topic I have been wanting to cover.


Goal For Round 8 of the #100DaysofCode Challenge

This is my eighth round of the “#100daysofcode” challenge. I will be continuing my work from round five, six, and seven into round eight. I was working through the book “Cracking the Coding Interview” by Gayle Laakmann McDowell. My goal was to become more familiar with algorithms and data structures. This goal was derived from my goal to better understand operating systems and key programs that I use in the terminal regularly e.g. Git. This goal was in turn derived from my desire to better understand the fundamental tools used for coding outside of popular GUIs. This in turn was derived from my desire to be a better back-end developer.

I am currently putting a pause on the algorithm work to build some backend/full stack projects. I primarily want to improve my skills with the back-end from an implementation perspective. I have improved tremendously in terminal and CLI skills but I lost focus due to how abstract the algorithm concepts got. I wanted to work on things that were more tangible until I can get to a position where I could directly benefit from improving my algorithm skills and theoretical knowledge. So that’s the focus right now. Build my backend skills and prove my full stack capabilities by building some dope projects.

Again, I still have no idea if my path is correct but I am walking down this road anyways. Worst case scenario I learn a whole bunch of stuff that will help me out on my own personal projects. Best case scenario I actually become one of those unicorn developers that go on to start a billion dollar company… You never know LOL.