Haunted by a big whiteboard shaped ghost: The technical coding interview struggle for a non-CS major.
This blog will document my journey. I’m studying my ass off so I can enter these technical interviews with confidence and CRUSH them.
I’m writing this post because I’m hoping this post and my future posts can help others in a similar situation gain, not only resources to help them succeed at building up their CS Foundations, but also gain the confidence to tackle these technical coding problems and interviews. I want these people to know that they are not alone! I’m here, and I’m struggling with you.
I graduated with a degree in Journalism — Advertising. It was a fun major, but my coursework lacked math classes. Even the mention of basic algebra is enough for me to change the subject of the conversation so people don’t see my lack of knowledge in the field. Don’t get me wrong, I was great at Math in high school… but that’s not enough for me to have a strong enough background to really grasp algorithms quickly.
When Googling how to improve algorithm skills and improve on coding interviews, I always see the same resources. People recommend reading Intro to Algorithms, and Cracking the Coding Interview. I have both of those books, great. So, what happens when I start studying? I think “oh shit, what are all these symbols?”. Mathematical Proofs, I have to learn Proofs. Then I read on, “Logarithms”, next thought: “okay, I gotta take an algebra class”. I start taking the algebra class and then I feel like a child and give up. I then start to just “practice” because everyone says practice makes perfect. First, I try to solve a coding problem, but end up in a similar hole and realize that I need to study basic concepts, and here I am back to trying to learn algorithms with a really weak CS background. Maximum Call Stack Size Exceeded. Infinite loop reached.
Am I a lost cause having to start from square one?
With all that I have to learn, where do I even start?
How do I stay motivated?
I literally have to start from square one, and it fucking sucks. Rome wasn’t built in a day. Everyone was once a beginner. <<Insert other cliche quote here>>.
I decided to just give up. I’m just going to ignore this weakness of mine and just spend the rest of my career pretending I’m this badass developer and can solve any problem while hiding this massive hole in my resume.
I don’t work that way. This is something that has been eating at me since I started my first programming job. I need to pursue my dreams. I need to fix this. I can’t just give up.
My main weaknesses at the moment are
- Data Structures
- Space/Time Complexity (Big O Notation)
- System Design
The first one will obviously be fixed by improving the other four.
So here’s my plan…
I plan on focusing on Algorithms and Space/Time Complexity first. Then as I get better at solving simple algorithms and figuring out their space/time complexity, I will dive deeper into learning Data Structures. Once I feel comfortable with both answering coding problems and with Data Structures, I will focus on System Design.
I will use Medium to post my progress and thoughts. I feel that having an outlet to express my thoughts will keep me motivated. Who knows, maybe I will connect with other people in the same position as me.
For the first stage of my plan, I will practice and learn with the following resources:
Practice with Interview Cake (partially free) and Code Wars (free). I’m going to try to solve one or two problems a day on each platform. I bought the full version of Interview Cake although you can get free problems weekly and access their glossary for free. Interview Cake has been great so far because they provide a guide as you are solving the problems, similar to an interview. I plan on only solving these problems using pen and paper to get used to solving coding problems without a computer. For Code Wars, I plan on just coding in the platform itself. I like Code Wars because it’s Kata style. What’s a Kata you ask? It’s a training exercise that you do over and over to improve. Code Wars offers a bunch of user submitted coding problems and you are able to do them over and over again (if you wish) to improve on the same problem. It’s a great way to see how your mindset progresses. Even if you do not want train on the same problem repetitively, Code Wars offers large variety of problems in different languages and levels for you to improve your coding skills.
I’ve been working through the practice resources listed above for a couple days now and I’d be lying if I said that I wasn’t already discouraged. I have attempted to answer four questions on Interview Cake and I did not get any correct. This is where I have to learn to stay motivated and I’m doing this by telling myself that although I did not come to the correct answer, I’m still learning. I need to build the mental model to approach these problems first. I haven’t seen problems like this, therefore how am I supposed to foresee the edge cases? By struggling through these problems my brain is restructuring by remembering my mistakes so I don’t make them again in the future. It’s all a part of the learning process. This is not going to be easy, but the most important thing is that I am taking the steps to improve and it WILL get easier in the future.
For those of you in my shoes, it will get easier for you too. I promise, you just can’t give up.