Sunday, October 14, 2007

The Google Interview

A couple years ago, there were some HR trolls or maybe some some resume bots that figured out that I went to MIT and that I was a software engineer from my blog (yes, this one). A recruiter from Google emailed me asking me whether I'd be interested in a position at Google. Um yes, isn't that every software developer's dream? That initial contact didn't amount to anything as there was no local office, but they called again recently when an office opened in Cambridge, MA. My initial phone interviews went great where I kibitzed with the HR recruiter. But they sniffed me out as a faker during the technical phone interview. It's not that I don't know how to program, but having no formal education (let's just say MIT's first programming class 6.001 made me swear never to be a SW engineer), I sometimes leave some of the nitty gritty technical details to magic. Since the software application I'm currently developing for work looks great and works beautifully, this is all I need! I have Google for the rest.

I had heard many about many interesting recruiting techniques that Google uses to get the best and the brightest. One of them is the billboard for Solve the Equation, Get an Interview.

Yup, way over my head too. Another is the Google Labs Aptitude Test which is a half-serious spoof with questions like "In your opinion, what is the most beautiful math equation ever derived?" Geek alert!

Most of my technical interview went pretty well as we got along fabulously. The coding sample wasn't too bad, although I was not extremely creative with my answer (reverse the order of the elements of a array in place). Luckily, I dodged questions about pointers since I've only done C# in the last two years and feigned forgetfulness (nothing the feign there, it was never my strong suit). But then I got tougher questions like how would you design a smart pointer interface. Yikes! She seemed happy with my answer, although she corrected me in that the interface must track the number of instances (seems obvious after the fact). I was encouraged when she asked if I could go extra time beyond our allotted hour. The she asked how I would design an assertion class, to which I responded that I use exceptions and not assertions in .NET. I think that was the WRONG answer. I could hear the BZZT! buzzer going off in her head.

Since we got along so well, near the end of the interview I confided in her that I have had really tough technical interviews in the past such as with SolidWorks, where they asked questions about vector geometry as well as programming. She responded that at Google, they need people able to solve those kinds problems as well. Oops (reminder to self, never be so chatty and self-deprecating during interviews in an attempt to be funny). Suddenly the interview was rushing to a close and I knew I had flunked. Needless to say, I received the email with "After carefully reviewing your experience and qualifications, we have determined that there is not a fit for a position," a few days later. I kicked myself for weeks afterwards on some of my answers during the interview.

The one thing that I did get out of this experience was a glimpse into the life of a Google employee. I had been fascinated by their culture (and gourmet meals) ever since seeing the Time magazine photo essay Life in the Googleplex. My interviewer was a woman who has worked at the Google headquarters in Mountain View, CA for 18 months and previously worked at AOL in Virginia. She was a technical leader and seemed quite ambitious. She lived very close to the office and worked long hours although not everyone is expected to (obviously no kids). The group sizes at Google are small, around 2-3 people, and the reporting structure is very flat. They use Agile, Extreme, Scrum and/or Test-driven processes depending on the group's preference. They test their own programs against the Google framework, which is like NUnit, and release products whenever they are ready. It sounded like a really cool, flexible environment, but I'm not sure how this old fogey would stand up to all the young whipper snappers who can name the first 10 digit prime found in consecutive digits of e.


Anonymous said...

I got one of those emails. Tardily I wrote back with my flaws and questions about what they saw that made them think I was a suitable candidate to contact.

They didn't answer my questions about what they saw or where they saw it. But even after the explanation of my flaws, they told me to look at various world sites for their job openings to see if there was something suitable.

Given the lack of answers to my questions and the lack of a suitable position locally, I never got back to the HR person.

Bigqueue said... an "Old Fogey"? Hmm...that would that mean that I probably have one foot in the grave!?!

Sorry, I think you are way to hard on yourself.....those people at Google put their pants on one leg at a time too you know.

I've worked at some darn cool companies myself....and trust me, you are far brighter than I. (not that Google would even think of calling me though :-)

Don't sell yourself short....MIT education not even being considered, you are way too cool and geeky for Google.

They just don't know what they missed out on!

Pamela said...

I heard too that Google Environment is very different. The interview tests is to test your attitude to Think out of the box. not next to the box but something ridiculous and also seem doable. Well, don't feel bad about this interview.Instead of working for Google, why not thinking how to maximise Google tools to work for you. If you can manage to crack some of the new innovations, they may start offering you the job of your choice- the marketing one not the technical ones.

Anonymous said...

I think many interviewers a hung up on hiring encyclopedias. But there are a lot of fakes out there and you really need to filter them out. I try to check the honesty of their resumes. I recently interviewed 6 C.S. Masters students. All received their bachelors in their native country and were in this country earning their Masters. They all had C++ on their resume as their primary language. They all were attending the same masters program with same amount of course work completed. Three were men from India and three were women from China. My question was to explain the difference between a heap variable and a stack (local) variable and how do you go about creating each one. Very easy question! The 3 men from India flunked big time and the three women from China passed. Needless to say which group we hired from and it has paid off huge. - George

michele said...

Man! Do I feel old. I knew that I can never get a job in the tech field now that I've been out for 13 years but reading your post made me realize how ancient I am.

Pamela said...

comment from a blogging chicks
carnival reader

** (those are my eyes glazing over)

Anonymous said...

You should be extremely proud that you were plucked from the blogosphere and interviewed by Google. Now, that you know the real answers, get another interview, the traditional way. Here from BCs.

Anonymous said...

Google's hiring cult (MIT, Stanford, et al.) is more than a little silly. For what you'd be doing at Google, having gone to MIT doesn't give you a leg up. It's more Skull-and-Bones (or Alpha Beta Gamma) -- our generation's equivalent of the old boys network.

I wouldn't call 6.001 a programming, or even software engineering, class. 6.170 is a software engineering class. 6.001 is computer science of the ivory-tower variety.