How I cracked Google : An Underdog story
13 min read
In this blog I would like to share my journey from a startup to Google. I believe sharing my story is important, as my journey is not that conventional. When I started my preparation, I used to read and watch people sharing their journeys. Most of them were from tier-I colleges and were working with top tech companies like Amazon, Microsoft etc. I am neither of those. Nor my path was easy, I faced multiple failures along the way. Through my story, I want to highlight the amount of failures one gets and why it is important to keep believing in yourself.
During my journey I also cracked a lot of companies. This meant I had to decline a lot of offers, sometimes after saying yes. This might have been disrespectful to lot of recruiters who put a lot of hard work to give me the same opportunity but I had to optimise my career growth. This is an apology to all the great recruiters who have helped me in my journey.
The story is a bit long. So if you are not into reading, I would suggest you to wait for the video version of this 😛.
I graduated from a govt. college in Odisha i.e. C.E.T in the year 2013. I was always into computers and tech during my college years but I never imagined myself working in any top tech company. I always thought I was not good enough to be working at Microsoft, Google etc. I got placed in TCS & FCS and I joined FCS as a Fusion Middleware Developer. I was basically working in Oracle technologies and eventually joined Oracle after 2 years. While in Oracle, I started a side project for which I had to explore some open source technologies. I fell in love with the MEAN or MERN stack. I decided to quit my career in oracle technologies and joined an awesome startup Zippr. This was a life changing event for me. I got to learn a lot from the awesome team and the complex problems I had to solve. I made a best friend/mentor there: Moyukh Bera. Sadly, Zippr had to shutdown a lot of its operations. This was the first time, I thought about working at Microsoft, Amazon etc. I asked couple of people what to do, all suggested geeksforgeeks. I got so overwhelmed looking at that website, I decided this was not possible for me, as I never did any data structures and algo in college. During this time, Moyukh & I got a chance to work on a startup idea from scratch. So we both joined Dentira. Again a great learning experience but I was more clear this time. I wanted to work on big scale. But the fear of DS/Algo was still there. So similar to the David & Goliath Story (cover pic), I decided to tweak my preparation strategy to my strengths & weakness.
I bought the Cracking the Coding Interview Book (CTCI). If you are new to DSA, I can't explain how great this book is for creating a foundation. I can't recommend this enough. Once I was done with this book, I was very clear that I need to practice different patterns of questions rather than just doing tons of questions. I discovered another website Interviewbit. This website was good, it had different patterns for each subject. After completing major portion of Interviewbit. I started exploring Leetcode. Leetcode has the best interface to practice and the discussion forum is the real shit. You get to learn a lot from other people. Not only how to write optimized code but also from their interview experience.
I had an edge in system design because of my startup experience. Grokking the system design interview course is a must. For remaining things the youtube videos and tech blogs helped a lot.
I read for 4-5 months and I started giving interviews in Dec, 2019 and gave my last interview in mid feb 2020. I was lucky that I had finished giving all interviews just before the lockdown. This was my first attempt. I tried in lot of product based companies like Microsoft, Intuit, Facebook etc but failed to get interview call.
In my first attempt, I failed in the following companies:
I would like to talk about the following interview experiences as they helped me immensely.
Amazon: I got a call from Amazon in early december, 2019. I was worried I might not get a call again from them. So even though I was not fully prepared for Amazon, I gave the interviews. This was a mistake. Interviews were going okay, I was struggling but I was not bombing any round. After the initial 3 onsite rounds, I was told I would be giving another round, I think it was a bar raiser round. The interviewer gave me a DP question. I bombed this round. I felt so stupid as I was unable to even come up with a brute force solution. This hit me hard, real hard. I always found DP very difficult as all the youtubers started with a table for a DP problem. I was not sure how do I come up with such solution on my own. I found an excellent course again for DP which made me conquer DP: Grokking Dynamic Patterns. Amazon interview also helped me to get a basic hold for behavioural rounds. I learnt the STAR method and came up with examples to explain some common scenarios.
Uber: One of my college senior and mentor referred me at Uber. I gave Uber with lot of interview experience unlike Amazon. But the two algo rounds were really really tough. I was asked Leetcode Hard question in both rounds. The first question was still intuitive. I managed to do that with lot of difficulty. The second round was too tough, I just came up with brute force solution. They still take all the rounds, so I gave the system design and hiring manager rounds etc. The system design round was unlike other companies I had given so far. The grilling was intense. The depth of knowledge needed was beyond my current capability. This pushed me to explore more. I ended up reading the following books:
Building Microservices : Sam Newman
Designing Data Intensive applications : Martin Kleppman
The Martin Kleppman book should be considered the bible for people who want to work on distributed systems. One should read this book line by line, probably multiple times.
Google: Thanks to my wife Anindita & the greatest recruiter ever (Komal), I got an opportunity at google. I gave my first round at google after joining Servicenow(in the first week). To my surprise, I cleared the screening round. Komal trained me a lot for the next 3 algo rounds and gave me enough time to prepare for the same. I think It was more than a month!. I did google tagged questions on Leetcode. I managed to get a 'yes' from all 3 rounds (Not all 3 strong yes). So she again gave me time for system design interview (almost a month). I got a weak yes for the system design round. I gave the G&L round too. I was trying for L4 level at that time, so expectations from G&L round were not that high. Ultimately, I was told that I have cleared all rounds and now a hiring packet would be created for me and it will go to HC(Hiring Committee). You can imagine the excitement and anxiety I would be having at that time. But sadly, the HC declined my profile. This had almost killed me ☹.
I cracked the following companies that year:
Out of these, Postman was very special to me. I always admired the product and have been an user from the early days. The interview experience was also great and the company culture really excited. Another great opportunity was Paytm. I also have been an early user of Paytm from my college days and have always admired Vijay Shekar for disrupting fintech in India. Finally, I joined Servicenow as Senior Software Engineer.
Being a full stack developer, I got good opportunities at Servicenow. I got to work on really complicated and scalable components from scratch. I learned a lot on frontend side. More importantly, I also learned how to work in a big tech company in a process oriented way. It is a great place to work. The company really pampers you. But I wanted to grow in backend space. I had gone into a comfort zone and kept on procrastinating my preparation. Due to covid, I had moved back to my hometown. Like everyone else I was enjoying staying at home and having more family time. Finding time and energy to read after work at home was becoming challenging. There was this pressure building in my head which started affecting me a lot. I packed my bags so that I can get more focus time.
This time, I knew I had to be better. For DSA, I initially focused on getting back on track. I practiced a lot this time from leetcode. I also tried to indulge deeper this time. Explored more patterns in DP. Improved my knowledge on Graphs and Trees(Red Black trees etc). This was also a struggle as some hard topics and hard questions needed a lot of time and patience. Handling work expectations and then solving such complex problems were taking a toll on me. It is a roller coaster ride, one day you feel you are at the top of the world when you solve some LC medium questions and the next day when you are stuck at a hard problem for hours, you feel depressed as shit. There were days when I just wanted to give up. What if I don't get any call this time too? What if I can't crack anything again ? Why should I leave a comfortable job and try this again ? Numerous questions were running through my mind. There were some days where I just wanted to lie down with a good book, binge watch a good series, even I had a feeling to learn a music instrument. My mind just wanted to do anything except reading. I believe these are the real struggle one has to win over. Conquering your mind, pushing yourself is the main key. Everyone knows what to read, how to read. Going through that grilling is the key. I had a close support group which included my wife, few mentors/friends & family. I would suggest you to do the same. Sometimes you need that push from people who are close to you. Whenever you are down, share your pain with them. They will give you strength.
The Graph course on Leetcode is really great. I also bought membership of Algoexpert. It was also not bad. If you are grinding leetcode, you can skip it. It always helps to explore multiple resources though. You get to learn from all of them.
For system design, I read those book and courses again and focused on the presentation part too. From my last experience, I got an idea that just knowing things is not enough. It is very important to give direction to the design discussion and covering everything in the limited time. I prepared again for 4-5 months by just focusing on DSA, system design and started giving interviews in Mid Nov 2021. This was a mistake again which I realised after failing in some of the early interviews. I was applying for SDE-3 roles this time. I hadn't considered that during my preparation. I will highlight the gaps when I discuss about the failures.
This time I failed in the following companies:
The learnings I got from these are:
Arcesium: This was the first company I gave this time. I cleared the algo and system design rounds of Arcesium. But I failed to clear a tech knowledge round. I had not brushed up the details on database, implementation details of Rabbit MQ, Redis etc, Multi threading, Race conditions etc. I realised the gap here. So I spent time on remembering the things I did in my startups and explored their documentation etc. I found a great channel where you get lot of practical knowledge: Hussein Nasser. For Multi threading, I found a great course: Java Multi-threading for senior engineers.
Atlassian: I aced the tech rounds of Atlassian. I got a great HR at atlassian too. He guided me really well for all the rounds. He also mentioned that Atlassian focuses a lot on behavioural and hiring manager rounds. I had some other interviews going on, so I was a bit casual about these rounds after acing the tech rounds. I knew STAR and basic examples prepared already. So what could possibly go wrong ? A lot did. I was rejected because I failed to convince the Hiring Manager. This hurt a lot.
Amazon: Amazon normally focuses more on LLD than other product based companies. But my target companies were always Google/Uber/Microsoft (personal preference), I never focused on LLD much. I don't have a strong JAVA background, so this obviously remained my weakness. This time around, apart from Amazon, a lot of other companies also focused on LLD. For LLD, initially I had just explored some vidoes of Soumyajit Bhattacharya and Udit Agarwal. After I failed in Amazon, I spent more time on LLD and explored couple of more resources: Workat.tech and Head First Design Patterns book. It is a must read for LLD.
Uber was the
Google of 2020 for me. Here also I found a rockstar recruiter who is my friend now: Prashant. He not only gave me an opportunity but also guided me like a friend for each round of interview. I felt as if we both were giving the interview. Luckily I got previously done LC Hard questions in Uber. So unlike last time, I cracked the algo rounds pretty confidently. The system design round also went well. But here also the hiring manager wasn't convinced. Prashant tried his best but sadly we couldn't turn this around. I was super low after this. After cracking so many technical rounds in various rounds I was still not getting an offer. I realised the gap. So I started preparing for behavioural rounds properly. Thought of better examples, different presentation techniques etc. Some of the resources which were pretty helpful: Algoexpert and Cracking the behavioural interview book. May be not cracking Uber was destiny. As this was pretty early in my journey. I would have stopped if I had cracked Uber.
I kept on facing failures in Dec, 2021. Apart from the companies I mentioned I also failed with Microsoft in my first attempt. Actually, Microsoft doesn't have company wide lock, So I got a chance to interview again with Microsoft in Jan 2022. Even the year 2022 started with failure at Uber. Till this time, I had only cracked Tekion and had got 6 failures. 1 success, 6 failures. This had broken me down completely. I had almost given up but thanks to my wife, family & friends, I kept on going. The learnings I got from all those failures helped me a lot. After filling those gaps, my preparation was pretty solid. I found one more book which made me even stronger in system designs from an interview perspective: System Design Fundamentals by Rylan Liu. This book is a must read and a hidden gem. Lot of people know about the book by Alex Yu, which is also good. But I really recommend reading the Rylan Liu book for system design interviews. There is one more youtube channel which is not that popular but is really good: CodeKarle. To make myself more confident about the G&L round I followed one more awesome channel: Jeff Sipe.
I cracked the following companies this time:
Basically after the failure at Uber, I cracked 7 companies back to back. I can't even start to explain the emotions which went through me during that period. All the interviews were tough and very satisfying. All of these companies had great things to offer. I feel so lucky to have been validated by all of them. If I could, I would work at all these 8 companies. But that is not possible, so I chose Google as it has been my dream company from a long time and this is a dream come true!.
My intention is to motivate other people like me who have the same dream. Don't stop believing and don't compare yourself with others. Create your own strategy, your own journey. Just don't procrastinate!
Please let me know in the comments if you are interested to know the details of my experiences at other companies. I will be more than happy to share them in another blog.