From Mechanical Engineering to Google: A Self-Taught Engineer’s Guide to Cracking the Google Interview

Faiz Hameed
7 min readApr 23, 2023
Photo by Joshua Earle on Unsplash

This piece of writing to respond to the numerous inquiries I receive regarding my preparation approach on social media, particularly Linkedin. I don’t mean to be disrespectful, but it’s difficult to respond to each of you individually. And many times, similar questions are asked by different people.

My Journey as a software developer

Image by Joshua Woroniecki from Pixabay

I did have some background in Computer Science from my 11th and 12th standards. Math and computer science were actually my favourites since they were so simple.

I pursued Mechanical Engineer, but I had a hard time during my course, I had to take supplementary exams multiple times since I failed my first attempt. However, I cleared all my papers before the graduation period.

After graduation, I took a couple of courses in HVAC etc and joined as a sales engineer. I was paid around 5000 rupees (61$) per month, so yea I couldn’t meet my expenses. Later I joined a company in Dammam, Saudi Arabia as a Mechanical Engineer, that's the time when I realized, this path is not for me. And I started learning web development and coding again after my work hours because I knew I wanted to make some shift to doing something I love or am happy doing. You can read about the rest here

This is now, after 4 years in software engineering. And it was my third company as a software engineer when I finally thought about joining a FAANG / MAANG. I did build a good reputation on LinkedIn. So I do get approached by top companies like, Amazon, Paypal, Uber etc. And I knew I am not ready for them yet. I should start preparing Data Structures and Algorithms as I have no background in these.

My Preparation Strategy

I didn't specifically prepare for Google. It sounded like too far to reach, for folks like me. I prepared for Amazon and gave my first interview. I failed and knew I did so poorly with the initial coding assessment. The recruiter gives a callback and says, you can give it another try after 6 months. I said ok, let's start learning seriously.

Over the duration of 4 years, I became more proficient with Javascript. So I learning new languages and then practising Data Structures and Algorithms could be time-consuming, so I decided to continue with javascript alone. But from my experience, Google and Amazon tend to favour candidates with good experience with any of the languages like Python, Java, Go and C++. Although I just studied Javascript, I am familiar with Python, but I have never used it for interviews.

Two courses that I took to learn Data Structures and Algorithms

Master the Coding Interview: Data Structures + Algorithms

Master the Coding Interview: Big Tech (FAANG) Interviews

The book I purchased

Cracking the Coding Interview by Gayle Laakman: This book has good topic-wise coverage though explained in Java but it's understandable and all the solutions in Javascript can be found here

The place where I practised a lot of problems: Leetcode

Most of the problems I practised are from medium difficulty, they are the core of your preparation. Moreover, I try to do multiple ways to solve the same problem, which really helps me engrave patterns in my brain.

Another thing I focused on after doing the aforementioned course is the blind 75. Nearly all of the patterns are touched by the issues in Blind 75. Solve every one of these problems, and if there are multiple ways to do so, understand that as well.

This is where I made it habitual to start with one problem per day to do 3 problems per day. It got into my daily rituals, so I didn't have to think about it, I just do it.

You can also read more about patterns at Hackernoon

System Design

I prepared system design specifically for Amazon SDE2 position, Google at L4 there is an option to opt for system design, while I opted for another coding round.

Grokking System Design from educative.io

If you wanted to deep dive and learn more, you can have a look at Designing Data-Intensive Application. I personally only read few pages from the book. I prepared from the course above and read the github resource.

My Google interview experience

I will try to keep this short and share only the essentials here.

I was approached by a recruiter from Google through LinkedIn. At this point, I am about three months after my failed Amazon interview. I reasoned that because it would help me gain additional interviewing experience, why not give it a shot. Recuriter gave me a month to get ready, which was quite kind of her. I was working on four to five problems per day.

I attended 4 coding interviews, including initial phone interview which is also coding round. Cleared all them averaging a rating of Good. I pretty felt I answered well on all of them.
Since I was a Javascript developer at the time, there weren’t many teams at Google that needed one. Finding a team initially became a minor issue for me, and I had to participate in an additional round of Javascript coding. In the end, I was able to select a team that genuinely wanted me.

Front-end vs Back-end

For Google, both front-end and back-end interviews are the same. You are expected to work either of them as needed, and I believe this is also true for Amazon. However, interviews for front-end and back-end are conducted differently at companies like Microsoft and Uber.

Which coding language to pick?

If a language is front-end or backend neutral, it should work for your coding interviews. However, I still believe that Python, Java, Go, and C++ would be the best option here, particularly for Google. Being a front-end developer with a focus on Javascript, I personally found it challenging to join a team after the interview.

How to apply or get interviews

Apply to job portels of the target company is one strategy. Remember if the companies are too popular there might be plenty of people applying to the same position. Around 3 million application per year for google per year

Therefore better and long strategy is to make good connections with people working in the target companies, understand about the work they do, share if you have done something similar, this way they might be interested and may refer you directly. Linkedin is the best platform for this. And there is higher chance recruiter might see your profile being recommended in their timeline.

Final Thoughts

Absolutely, working at Google is exciting. I, however, have no strong emotional ties to any company, while always trying to do my best wherever I go. I consider myself to be an individual owner here, any subpar effort can damage my reputation. In addition, luck also contributes. The question you get, you mental health on the day of the interview etc. So don’t focus on a single company, focus on doing the best.

Everywhere there are layoffs, and applying to these companies can be challenging since they are becoming pickier about who they hire

hopefully things will change. However, nothing should stop you from becoming the best.

I am a football lover. I play football every day, this is something that keeps me healthy as well. Playing sports or exercising refreshes the mind. I don't miss more than two days without any physical activity. Remove every other distraction and you will be successful.

Since you have read till here, I feel you could also be thinking the same as me. Now it’s time to get started with your journey and be excited. Please share your thoughts in the comments. I would highly appreciate if you could support me by clicking the clap button at the bottom.

If it helped consider sharing with your friends and family who might be aspiring to become a great software engineer
Follow me @ LinkedIn and GitHub

Disclaimer: Although the links I’ve provided may be affiliates, I genuinely am not endorsing anything that I haven’t personally used on this journey.

--

--

Faiz Hameed

Software Engineer at Google. Enjoy making lovely stuff.