Photo by Mitchell Luo on Unsplash

How I went from failing my computer science courses to working at Google and Microsoft

You know how in some classes the professor lists out the low, median, and high score for exams and assignments? I vividly remember in the spring of 2017 I had just taken a my first midterm for a computer science course, and the professor mentioned that the low score was a 12/50. 24%. I chuckled and thought to myself, “Wow, I feel so sorry for whoever got that grade. Maybe they should drop the class and try retaking it.” That low exam score was me.

This wasn’t a one off occasion either — time and time again I got the low on every assignment, quiz, and exam. I ended the class with a D, a near failing grade (luckily my school still considers D a passing grade so I didn’t have to retake the class). At the end of this all I started to question myself: Should I continue to pursue software engineering? Am I smart enough? Will I ever get a job?

I know that I’m not the only person who has been in this type of situation or who has asked myself these questions before, and, if you’re in this situation right now, I’m here to tell you that you should continue to pursue software engineering, you are smart enough, and you will get a job. This guide is primarily aimed towards people who haven’t had a technical job/internship before and are starting from scratch.

Here’s a step by step process on how I went from failing my computer science courses to working at Google and Microsoft.

Photo by Clément H on Unsplash

Step 1: Interview prep

Wait a minute. You might be asking yourself, “Why should I interview prep if I don’t have an interview yet?” If you start interview prepping once you have an interview booked, you’re too late. The moment you get an interview booked, you don’t want to be thrown into a state of panic of whether you’ll do well on the interview or not — you want to be confident in your months of previous preparation. Rather than going for the hail mary approach and cramming 100 practice interview questions in 2 weeks and having your soul leave your body from sheer exhaustion, try the low and slow approach. Try doing 2 questions a day every single day, then within 2 months you’d have done more than 100 problems. This is much more manageable than trying to do 20 questions a day for 2 weeks because, let me tell you, these questions are exhausting and you will burn out.

If this is your first time interviewing prepping, I recommend getting Gayle Laakmann McDowell’s book, Cracking the Coding Interview. Read through every page of it and do every problem. The questions will definitely be hard at first, but trust the process and know that with every question you complete, the next one becomes a little bit easier.

Cracking the Coding Interview, by Gayle Laakmann Mcdowell

After you’ve finished reading Cracking the Coding Interview, head over to, register for a premium account, and start doing questions. I believe that LeetCode premium is worth it as you can filter questions by companies, get access to additional questions, get access to question solutions, and also do practice interviews to mimic onsite interviews. After every question (even the ones you do answer correctly on your own), read other people’s submitted solutions. See how other people solved the problem, and jot down some notes of some major takeaways. Maybe you implemented a solution iteratively and others did it recurisvely — take note of it. Maybe someone used a priority queue and you had no idea that was an approach — take note of it. The purpose of these questions isn’t to simply get them right, but to break down the underlying concepts of all of them and to use these concepts in future questions.

LeetCode’s landing page

While the process outlined above is a process that has proven to work for me and my friends (we’ve all landed jobs at Google, Facebook, Microsoft, Amazon, Twitch, Lyft, Robinhood, etc.), there is one tweak you can make to this process to make it even more effective: find an interview prep partner. With an interview prep partner, you can both do 2 questions a day, and then later in the day you two will give each other mock interviews with the 2 questions that you both did, totalling to 4 questions a day per person. The reason why having an interview prep partner is extra effective is because during real interviews, the interviewer will give you some hints and some feedback as you solve the problem. LeetCode is great to use as practice, but you lose some of that person to person exposure you get in a real interview.

Step 2: Landing the Interview

In my opinion, landing the interview comes down to demonstrating your technical aptitude. Often times this is shown in two forms: certification and projects.

Certification comes in many different forms: college degree, bootcamp certificate, high GPA, etc. It’s a quantifiable measure of your technical aptitude. If you have some type of certification (high GPA is a common one amongst students), then this should help you land a few interviews. Although a lot of these companies tout that they don’t take GPA into consideration when screening candidates, I’ve found that a lot of my peers that had very high GPAs/came from credible schools but had little project/technical experience still got interviews.

If you don’t have some type of certification to demonstrate your technical aptitude, you need to build projects as these are the only other way you can prove to companies that you have strong technical skills. Don’t be afraid to list some of the projects you made for your school classes. If you’re at a loss for what type of projects to build on your own, a quick Google search of “software engineering project examples” will bring up plenty of inspiration.

Left on Read’s home page. A project some friends and I built.

A project that I built with a few friends was an iMessage texts analyzer provided analytics about your texting habits. It was a great way to learn full stack web development and some basic data visualization, but I also believe that this large scale of a project showed recruiters that I was technically savvy.

There you have it — my complete guide on how to interview prep and land interviews for software engineering jobs. I know that interview prepping is grueling and landing interviews is another beast of its own, but I hope that this guide makes it a little bit easier and provides some structure to such a difficult process.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store