This post is about to partake in considerable navel gazing. An interview is a product of the company combined with the interviewer. Thus I am going to present my interview experience and the leasons I learned, your mileage may vary.
TL;DR: My interview was stressful, super fun, and a great learning experience. I failed to get an offer but that’s A’Okay.
昔々 – In the beginning
Submitting a resume to Google is a non-trivial action for someone like me, a human. I have self-doubts, I know all my faults and oh-boy are they faulty faults. I only started programming when I was 17. I don’t know Ruby, or Node.js, or Haskell. I’ve never written a multi-threaded application. Just yesterday I wrote something incorrect, on the internet. I am attending my city’s university, not even my province’s much less the ivy league. The first open source project I released included a remote execution vulnerability that took me a two weeks to notice.
And then I compare myself to a friend from high school. Before I knew for loops by heart he was contributing to CLANG. The summer after high school while I was learning PHP, he was doing Google Summer of Code. He then enrolled in Canada’s premier Comp Sci university. The next year while I was doing GSoC he was interning at Google. If Google has people like those why ever would they give me the time of day?
Yet Google sells applying hard. They send recruiters to universities. Everywhere online Googlers repeat the mantra, “Google is awesome and you should apply, even if you are not awesome.”. Even the GSoC mailing list received an invitation to apply.
Google has put more effort into selling me on the idea of applying than any other company ever.
Yet it took 6 months after they gave me a pizza for me to build enough courage and click the apply button.
時間が掛かる – The waiting
Pressing the apply button is the very definition of anti-climatic. I had spent months thinking about it. I had spent days working on my resume. I had spent an integer multiple of 30 minutes double checking my application. This climax resulted in a simple email in my inbox.
Notice how nowhere do they use the word ‘fastly’. This is for two obvious reasons:
- Fastly is not an English word, I just made it up
- The process is not fast
I cannot fault Google for the speed but I would be dishonest to not mention that at this point you need to do two things:
- Mark your calender for one month from the date you applied
- Forget that you applied
When I was younger I had a habit of buying cheap trinkets from China. Shipping was free but took months. My first few purchases drove me crazy. They would take weeks to even get shipped and even longer to reach my doorstep. Yet by about the seventh shipment my attitude had changed. I would buy things and forget about them. I had learned patience.
Two weeks later and 1.5 weeks after I had forgotten; I received feedback. I got an interview!
準備 – The preparing
I’m not sure what I was thinking. I knew when I applied what my timetable was: busy. I was taking a year’s worth of Japanese classes in 6 weeks. Every day we covered a week’s worth of material. I loved it. Yet that is perhaps not the best time to study for an interview. I asked my recruiter to schedule the interview right after my class ended.
This gave me time to study. Sure I had studied even before applying. Sure I had taken my Data & Algo course. None of that is ever enough, I /need(ed)?/ to improve.
I based my study on this influence blog post: http://steve-yegge.blogspot.ca/2008/03/get-that-job-at-google.html
I had bought the algo textbook he recommended and my goal was to read all of it. I had two weeks to read half of it which I did manage.
本物 – The real thing
Given any arbitrary finite number, N, and an always incrementing variable, I, there will always come a point when I >= N. I had set my interview two weeks into the future but time can only slow so much. At some point my interview would occur, a mathematical inevitability. My estimate was that this would occur in two weeks right at 10am.
An obvious conclusion, yet like so many other attempts to apply simple math to the real world it was incorrect.
Once the world’s clocks, adjusted for timezones, hit 10am my interview failed to occur. Nothing had happened, my phone did not ring and my inbox was empty. My interviewer did not show up.
I waited until 10:05am and emailed my recruiter. After a further 3 minutes of panic my she replied, she was having troubles contacting my interview. This was my best case scenario. You see in those seven minutes I had hypothesized several other scenarios:
- It was all a dream
- California had been blown up to turn Naveda into beach front property
- The tech bubble had popped that morning and Google had no longer a need for interns
Instead it was traffic. My interview was stuck in traffic. Truly the better scenario.
Thus my first interview became my second interview and I received an unexpected 40 minute break to cook some food.
Again since 40 < ∞ the story is not over.
Now I have to ask: have you ever heard of a phone interview done over IM? I had not, but I had heard of consumer VOIP not working. Skype is notorious for this. Yet I had two constraints:
- My smartphone has a prepaid SIM, calls costs 25 cents per minute
- My student housing has a nine year old cordless phone, it’s battery will not last 10 minutes
In my freelance work most communication is over email or Skype if the client wants to talk. This is the 21st century after all. With that in my mind I asked my recruiter to accommodate me, I wanted to do the interview over Google Talk.
Google Talk of course because Skype would be insulting, plus it might not work. As it turns out Google Talk also has a slight chance of not working, about 60%. My first interviewer was not able to get Google Talk working under his Chrome OS installation. I want to believe that this is because he was a Chrome OS developer running some bleeding edge version, and since we have no evidence otherwise lets just pretend that was the case and move on.
Thus my first interview took place over IM and a shared Google Doc. After 30 minutes of not-interviewing we fell back to pure text communication. For the next <30 minutes I programmed in the Google Doc and tried to explain my thinking in comments. Things went ok. I did have a massive bug in my program but I managed to be the one to find it. At first he did not see the bug but once I explained the edge case he agreed my code was bad. Overall it was not much different from regular programming.
To be honest I think that interview was a wash. I sure know that I would have ‘no-hired’ myself if I was in his position. I had failed to impress and while I can blame tech, the reality is that it is my job to impress.
I have to give credit to my second interviewer. He set aside time before the interview to setup Google Talk. We still lost a good 20 minutes out of the hour but we were able to have a real conversation.
Now I am about to do something I maybe should not do. I am about to tell you one of his interview questions. I promised Google I would not, but here is why I am going to do so anyway:
- The question is only applicable to some people
- There is no right answer to this question
- The people to whom this question apply should ask themselves it
He asked me why I liked Open Source. I was taken aback, I had no answer. I dedicate many hours writing open source. Over the summer I earn less than my classmates because I want to work on Open Source. I will use an inferior Open Source program to a superior proprietary one. I avoid non-open source programming languages like the plague.
I know I like Open Source, that is not in question. Yet the question of why is one I did not know. I tried to save face by reciting the standard lines. You know the ones about many eyes, about freedom, and about self selection. Yet I know those are not MY reasons for liking Open Source.
After the interview I thought and determined my true why. If you are curious you can check my resume, right under the ‘Open Source’ header.
His next questions were classic algo questions. At the time I did not realize it at the time but he even asked me how I would design assembling Google’s search results. Since this is perhaps the second most time critical piece of software on the internet I feel embarrassed I got annoyed at his insistence on absolute performance. I never said anything of course and my final design was optimal, I just could not remember the details of the key data structure, only the name.
Since I cannot talk in detail about the question that triggered it I will have to add the following tip without backing detail.
One implication of the above is that I got into an argument with the interview. I assure you, I did no such thing. Instead I realized later that me and my interviewer had understood the question differently.
After that question we did some programming and I figured out that my interviewer was a Linux Kernel Developer, the braces of his function blocks gave it away. This gave me an opportunity to thank him for his kernel work after the interview ended, which I think was only fair considering I had just consumed his entire productive morning.
On that note my interviews were over. A few days later I got the standard email from Google about not fitting any of their current roles. Before I knew this was the standard email I thought maybe I had made a mistake doing the interview in C. Google only uses C for a few projects, the Kernel and Android, both of which I would not be good enough to work on. Thus I feared I had done it:
Which is not the case, I was just not good enough. Still that would have made a great story eh?
追記 – Final comments
I am thankful for knowing people better than me. Without my friend having done a Google Internship I would not have considered it. Without smarter classmates I would slack. I am on a constant search for people who are better than me yet humble about it. I enjoy being around them and I enjoy the effect they have on my motivation. I know Google has people better than me and I also know the company is always encouraging people to apply which sounds rather humble. Thus I will be applying again, and then again. At this point Google should consider saving some money and blacklisting me.