Six years ago I interviewed at Google to join the Angular team. It was a brutal, all-day interview with four different interviewers, each of which had me run through pretty difficult problems using every programmer's favorite tool: a whiteboard. At this time in my career, I had been interviewed at least 100 times. I went into the interview pretty confident of my chances. But by the end of the day, it was obvious - I wasn't going to get the job.
I was determined though. I had a dream of working at Google and one bad interview wasn't going to dissuade me. I became determined to fix what was wrong and try again. Over the next six months, I studied over 300 hours. As I worked to fill in my gaps in data structures and algorithms, I also made a focused study of how to interview at a big Silicon Valley tech giant.
I read books, I practiced problems (on paper, to simulate a whiteboard) for several hours every day.
Finally six months later I re-interviewed. This time I nailed it. I answered every question, I solved every problem competently. I knew they were going to offer me the job. My wife and I started looking at houses in the Bay Area. And when the phone call came and they told me "thanks but no thanks." I was absolutely floored. I couldn't believe it.
I don't regret at all the time I spent studying and the things I learned but the lessons I took away from that experience are mostly unrelated to the technical knowledge I gained:
First, study and knowledge aren't enough. In most things, there's still a reasonable element of luck.
Second, with very focused and consistent effort, you can learn a lot more than you may think you can.
Third, most often in life, you learn much more from failure than from success. If I had passed that first interview I wouldn't have learned very much. It was the failure that drove me to achieve and study.
Fourth, even with dashed dreams, life moves on and still brings amazing things to us. So many great things have happened to my career that couldn't have happened if I had gone to work at Google.
Finally, I learned that sometimes you use the knowledge you gain for unexpected things. I now get the opportunity to frequently teach the art of technical interviews. Even as a "failure" I learned so much that I get to use to help others. It's certainly not what I planned on doing with all those hours I spent, but it ended up being something that I greatly enjoy. And life has a way of bringing around surprising opportunities to our door.
What failures have been your best teachers? What failed efforts have given you far greater things than you imagined you'd get. What major failure/disappointment have you just faced? How has life thrown you a curveball?
If you ARE interested in studying classic computer science topics, you should definitely check out Nicholas C Zakas' amazing Github repo "Computer Science in JavaScript"
Happy coding!
Signup for my newsletter here.
Visit Us: thinkster.io | Facebook: @gothinkster
| Twitter: @gothinkster
Top comments (1)
Sorry to be blunt but I find this insane.
If I were you, I would do a cost/benefits analysis of what it has meant for you to apply at Google.
The next time you find someone praising Google's interview process, you can ask him this brain teaser:
Now if you actually ask yourself this tough brainteaser, good news, you will feel instantly smarter for having asked such a tough question and let the other guy do all the job.
Don't take it from me. Laszlo Bock, former head of Google HR, said this