My Google Experience
I suppose it’s some sort of “rite of passage”, but I got pinged from Google about a month ago for a possible job opening. A Google recruiter came across my blog (very likely what you’re reading now) and thought my credentials and experience might be a good fit for a position at the office in Boulder, CO (that office, as far as I can tell, is mainly responsible for the Google Docs suite of products). While I’m pretty happy where I am, I felt very flattered they would feel that I could be a good candidate at a company whose hiring standards are the things of engineering lore.
The recruiter asked my permission to apply for the position, and the next email I received was that one of the senior engineers was interested in having a phone interview with me.
Let me back up and say that I was not sure what to expect. In my day-to-day projects, including those both both work-related and “for fun”, I typically spend more time playing with the latest technology than thinking about things like the efficiency of the Java Collections library. In other words, I’m very much a pragmatist rather than a theorist in most cases.
However, I decided to look at this opportunity, however it turned out, as an excuse to improve my theoretical skills and advance my effectiveness overall as an engineer. To that end, I delved back into discrete mathematics, algorithm analysis, concurrency issues, and overall performance making a conscious attempt to look at problems more like Google might (on a super-large scale).
I’ll talk about the actual interview below, but just the process of prepping for the experience was a huge boon, I believe, to my individual development as an engineer. In fact, I had such a good experience revisiting these topics that I have decided to both continue the process as well as begin looking towards starting a graduate degree later this year.
The interview itself went fairly well. As far as advice goes, I’d recommend anyone attempting to interview with Google refresh their algorithm analysis knowledge as well as spend some time on the more esoteric features of the platform/language in question. I had a question about Java inheritance which I answered incorrectly (I realized after the fact when I tried the scenario) simply because I rarely use inheritance in my day-to-day engineering (I prefer composition in most cases these days). However, I think my answer to the algorithm analysis question was pretty spot on albeit taking probably more time than I should have getting my head around the problem.
Despite not being picked up for the position, I’m still flattered that, less than two years after receiving my CS degree, I am getting interest from a company known for hiring only the best. It makes me believe that my career is on a good trajectory and gives me even more to look forward to in the future.