avatarBurnout Devil

Summary

A software engineer from Turkey overcame initial failure in tech interviews by applying the principles of learning to juggle three balls, eventually securing an offer from Amazon.

Abstract

The author of the article, a software engineer from Turkey, recounts their journey of failing a Google interview in 2014 to securing an offer from Amazon in 2019. Initially, the author felt inadequate and attributed the ability to work at tech giants to genius. However, after learning to juggle three balls, the author realized that success comes from practice and understanding patterns, not innate talent. This revelation led to a structured approach to mastering data structures, algorithms, and system design, as well as behavioral interview skills. The author emphasizes the importance of a solid foundation in data structures, recognizing patterns in algorithm questions, embracing failure as a learning tool, and preparing for system design and behavioral interviews.

Opinions

  • The author initially believed that working for tech giants was an indicator of genius, a belief that was challenged and changed through their experiences.
  • Learning to juggle three balls was a pivotal moment, demonstrating that perceived talent is often the result of structured practice and understanding.
  • The author advocates for a methodical approach to problem-solving, emphasizing the importance of breaking

How I Cracked the Code Interviews by Juggling Three Balls

An unusual story about how I got offered by Amazon as a software engineer

Image generated by Midjourney

I remember failing my interview with Google as a software engineer the first time. The year was 2014, and I was a mediocre programmer working in Turkey.

My professional self-esteem and interest weren’t that high at that time. They were slowly dissolving inside the patriarchal company culture day by day, and the sad part is that I wasn’t aware of that simple fact. I was blaming myself and thinking I simply wasn’t enough.

One day, a message dropped on my LinkedIn message box. Google wanted to interview with me. WITH ME!

I was thrilled by the idea, and my imagination was running like crazy. I downloaded this stupid book called “Cracking the Coding Interview.” I even printed the whole book with all that excitement.

Even though I wasn’t able to solve a damn single problem from that book, I managed to pass the first interview, but I failed in the second phase.

They asked me how much data capacity is required to keep all the data from Google Maps.

What a stupid question!

For those who are not familiar with the SE interview process of tech giants, let me briefly explain the steps that you need to complete in order to get an offer.

  1. HR Interview: Non-tech interviews. HR person trying to understand whether your English (communication) is good enough and getting some information about your background.
  2. Automated Algorithm Interview: Sometimes they send you one or two algorithm questions over a platform like Hackerrank. Once you start the questionnaire you have a limited time to finish. Most of the candidates are eliminated in that phase.
  3. Phone Interview: Solving one or two algorithm questions asked by a real person(tech interviewer) in an hour or so. These interviews are running online that’s why they are calling phone interviews.
  4. Onsite Interview: This is the real monster. Once you completed the previous steps, you get to attend this series of interviews. You need to go through 4 or 5 consecutive interviews that generally include problem-solving (algorithm), object-oriented design, and system design sessions.

Let’s get back to my story…

Working as a female engineer in Turkey was a challenge in itself. Getting eliminated like that after all of my daydreams, was even harder. I remember thinking how impossible it is to get into these tech giants as a software engineer. I thought that people who work for them must be geniuses. Achieving something like that seemed inhuman to me back in those days.

Until the day I met with juggling…

I have always admired people who can juggle three balls. Any time I tried to do that with some oranges, I failed terribly. I thought some people were very talented at doing that, but I was not.

However, it only took less than 15 minutes for me to understand juggling with three balls had nothing to do with talent.

One day, a friend suggested teaching me how to juggle three balls. I literally laughed at him because I thought it wasn’t something that you could learn. I was so sure that you could either do it or not. But he was serious and showed me how to learn that trick…

  • He divided the pattern and gave me only one ball. I started throwing the ball from one hand to the other. When my muscles adjusted that move, he passed me the second ball and asked me to repeat the same pattern.
  • I threw the first ball, right hand to left, and when it started falling, I tossed the other one, left to right. To my surprise, it only took a couple of minutes for me to succeed in that pattern.
  • Then he passed me the third ball. I was holding one ball in my left hand and the other two in my right, looking very confused.
  • He told me to relax, start with the hand holding two balls, and repeat the same pattern. A couple of trials later, I had one of my life’s most spectacular moments. I felt like I had achieved something big, which was partially true. I was juggling three balls.

After that, I kept juggling and juggling. Once you got the poison, there was no coming back from that.

I experienced how easily I could solve the most complex juggling patterns by applying the same learning methodology. Some required more time than others, but I could see and feel my progress very clearly, which changed my whole perception of success.

For the first time in my life, I was genuinely enjoying the learning process.

In 2019, one day, after intense training, I got back home and checked my email. This time, it was Amazon that wanted to interview me. After the first panic wave, it hit me right there and then…

What if these interviews were like the complex juggling patterns that intimidated me once?

What if the engineers there were like the jugglers I envied once?

So I took a deep breath and thought about how I could crack those interviews on my way.

Image generated by Midjourney

1- Back to Basics

In juggling, if you constantly fail on one pattern, that means either your body (your neural connections) skipped some information or you learned something wrong on the way. So you need to take a step back, take apart the move, and try to find what is going wrong. Beat your ego!

For example, if you fail with five juggling balls, you must go back and check your four-ball skill. If you are failing at four falls, there is no chance that you can accomplish a smooth five-ball.

That’s why I swallowed my almost ten years of engineering pride and returned to basics. I learned arrays, linked lists, stacks, hash maps, and all the other data structures from the beginning. I realized how much I had forgotten since I never used them after college. I corrected my mistakes and built an excellent foundation from scratch. Data structures became my toolbox, and once I got comfortable with them, it was time for me to use them to solve algorithm questions.

2- Discovering Patterns

When you see a person who can juggle five balls, you genuinely admire their talent. That is wrong! Juggling with five balls has nothing to do with talent. You need to train a lot and train smartly.

Here is the trick for learning five balls:

  • First, you need to be able to juggle three balls smoothly, and then you start throwing those three balls a bit higher and try to be familiar with height because five balls require more space.
  • After that, you must train different throws with three balls to work out your micro muscles.
  • Then, you can switch to the four balls and work on some four-ball patterns.
  • If you look at these trainings, they do not seem related to five-ball juggling at all, but they are. Only after that kind of training can you observe some processes of your five-ball juggling skills.

Life is entirely of patterns, and all the complex things we see in nature or within ourselves are a combination of these simple patterns. We must learn how to take them apart and handle them piece by piece.

There are thousands of interview questions online, which can be pretty intimidating if you don’t know where to start. There, most people are giving up on preparing for interviews generally.

Here is how I cracked the algorithm interviews

  • Those complex algorithm questions fit into a category(a pattern). Here is a good source for learning those patterns.
  • If you start to get familiar with those patterns, you can understand the nature of the problem, and viola, you are already halfway there to solve it.
  • I learned one pattern, and patiently, I solved at least three questions related to it. Always went easy to hard. Always!
  • Then something magical happened. I started to solve hard algorithm questions in 15 minutes.

3- Learn to fail graciously

In juggling, there is one divine rule. You have to drop balls to improve. So, with time, all the jugglers learn to make peace with failing. I’ve been practicing five balls for over four and a half years now, and I probably dropped thousands of balls on the way. I learned to value every one of them.

After two months of preparation, I finally passed the second phone interview and reached the Boss. On-site Interviews!Four consecutive rounds of intense interviews.

I went to Madrid and attended the interview. It went way better than I expected. My hopes were high. One week later, they contacted me and told me I had failed.

I was so upset for a couple of days, but I knew what I had to do, and I just accepted my failure and moved on. 6 months later, I started another interview process with Amazon, and this time, I didn’t repeat any of my previous mistakes. I got the offer, and that is the end of the story.

Practical Tips and Resources

1- Do not buy “Cracking the Coding Interview” book. Do not download it, do not even peek.

2- First you need to set up a good data structure foundation. Without a good understanding of data structure, it’s not possible to solve hard algorithm problems.

3- You need to learn the patterns of algorithm problems. Once you get familiar with patterns, I suggest you solve a couple of problems related to them. I also strongly recommend that always go from easy to hard questions. Don’t jump right into the medium and hard questions because It’s not so easy to handle when you fail to solve a problem psychologically. So be gentle to yourself.

Here are some resources that you can use to understand the patterns.

4- In parallel, you must also improve your system design skills because most tech giants have specific system design interviews.

If you have never worked on designing a system at your work before, it’s okay. Do not panic. You don’t have to be a tech guru or some architect to nail the system design interviews.

First, you need a toolbox to create a system, so start learning core concepts like caching, latency, proxy, database, network protocols, how the internet works, etc. After that, you can understand scalability, availability, and reliability well. These are the three main concerns of all businesses these days. After that, you can watch videos about “How you can design …”

How can you design a YouTube search?

How can you design Amazon for kids?

How can you design Twitter?

4- Take behavioural interview and interview protocol seriously

This was the mistake that I made on my first onsite interview. There is incredible bureaucracy and communication inside those companies, even for a software engineer. So basically, those people are not just looking for top-level problem solvers but also good communicators. You need to actively communicate with your interviewers and prepare for behavioral interviews beforehand if they ask you.

I also suggest you follow this person. He posts pretty useful and practical tips about the general interview process.

Keep your heads up and good luck.

Please like this article and follow me if you want to hear more and support.

Software Development
Interview
Juggling
Software Engineering
Personal Development
Recommended from ReadMedium