For many Computer Science students, Google is their dream job. They have heard stories on the internet about how working at Google has all sorts of perks- free food whenever you want it, fun colored buildings, smart people all around, even
massages whenever you want them. Apparently, working at Google is like going to Disneyland every day.
I was lucky enough to be contacted by the big G. Somebody in the Platforms group found my
resume on the internet, and wanted to phone interview. So, I called and talked to them for a while. It wasn't until I actually got to interview at the Googleplex (yep, thats what they call it) that I got more of a feel for what the platforms group does.
There was then two significant parts to the platforms group: software, and hardware. I should explain that Google designs their own hardware platforms to run on- they have essentially their own server designs, motherboards and everything. Some
information on their machines was recently released (and that's why I'm a bit more willing to talk about this now). When I was on site, I didn't really know much about what I would be doing- I just found out that Google does a bit of hardware development for their server platforms, and the platforms software group works on the OS, drivers, and file system configuration to run on the platform. Other groups are responsible for the actual application/server software that runs on the machines- the platforms group has the responsibility for adding servers to the network in a scalable way- other groups write software to run on them.
The Googleplex was really interesting- maybe another day I will write a bit on that.
The interview was a sequence of six or seven interviews, each fourty five minutes long. My first impression of the interviewers was that they all seemed very hurried- every was busy. It was like seeing a normal company before a big deadline. Everyone had too much to do, and was running around trying to accomplish stuff. The interviewers were very good at interviewing, and trying to really see how I thought and what I was good at, rather than asking trivia/knowledge questions. Questions centered on solving a bunch of problems or brain teasers for which the answers weren't immediately apparent. On a lot of the questions, it seemed the goal was more to see how I thought than to see if I would immediately get the correct solution. I was given hints pretty quickly when I didn't know how to solve a problem, and was encouraged to describe my thinking process out loud. I think I did exceptionally well at most of these types of questions, describing what I was thinking as I attempted to solve several problems. The interveiwers for the most part did a great job-
Joel Spolsky would be proud.
There was also a lot of code written- a lot of simple functions. I had one interviewer who focused entirely on dimming LEDs for 45 minutes. I wrote code for most of the time, just changing colors of a RGB LED, doing PWM to control the color output, fading from one PWM setting to another, color space conversion (!), LED color/voltage nonlinearity, etc. This really was a perfect thing to quiz me on in retrospect- it is simple, can be easily explained, but yet requires a demonstration of knowledge about PWM, C, and other embedded and microcontroller programming. I probably wrote several hundred lines of easy code on the whiteboards in that conference room by the time the day was over. It was easy code for the most part.
I really didn't do to well on the hardware portion. I was interviewed by people from both the hardware and software halves of the platform group- and apparently the software people liked me a lot more. I remember in particular screwing up a question really bad from one of the hardware group interviewers. I was asked how to blink a LED from a microcontroller- what would the drive circuit look like? Like most of the questions, it started out easy. The microcontroller pin had enough current to drive the LED, so I just added a series resistor. Then, like in most of the other questions I was asked, it got more and more complicated until I couldn't answer it. On almost everything, they enjoyed giving you a question that has an easy answer, and then adding complications until you reach the limit of your knowledge.
My failure in this interview question was that I couldn't name the three pins of a MOSFET. It hd been a while since I had done any circuit design in school (I had been finished with EE classes for a while), and I could name the source and gate, but couldn't name the drain for the life of me. The interviewer even seemed a bit surprised that I had a EE degree and was doing so bad. I felt a bit discouranged, and didn't ever really seem to fully redeem myself with that interviewer.
I cast off the discouragement, and took the chance to start new with each interviewer. They were all great at getting useful stuff done in their 45 minute interviews. I asked the first guy how many people he interviewed per week, and I think he said something like five per week. Thats one per day. Almost a full hour a day talking to potential hires. That really says something about Google's growth rate, which really hit harder later.
The guy that interviewed me during my free lunch was one of the more interesting people. I mentioned offroading, and he said that was something that he occasionally did. Four-wheeling in his Audi. Yep.
He also said that he had started with the platforms group when it was about 25 people, and it now had around 150. This group had apparently grown very fast as it became more and more important with the rise of Google, and the number of employees in the group doubled every six months.
I didn't initially write this to describe the interview, so back to the primary topic- Why didn't I work at Google?
I was driving down the road in Sunnyvale after the interview, and my parents called. It is probably illegal in California to talk on the cell phone and drive (a minor gripe, but still a gripe), so I looked for somewhere to pull off the road and park. Every parking lot had some kind of restriction- for customers only, employees only, etc. Land appeared to be so expensive, that there really weren't just free parking spaces. I eventually found a gas station, but I realized that I really didn't like how expensive everything was. I don't like California, and I thought about how if I worked there, so much time would be spent communting and most of my income paying rent, that I really would have much less free time, less access to the outdoors, and less spending money.
I still really liked Google- they were a great organization, doing lots of cool stuff. I liked the work, and the company, but really California is why I didn't work there. For a while, I waited for an offer to compare to my current employer. I was told that I had an offer on the table, but they couldn't send it out due to a last minute hiring freeze from the top. Something about how the company needed to figure out how many employees they had after the Doubleclick acquisition. The freeze hit at the wrong time. I had already pushed my current employer for time so that I could fly out and evaluate Google, but my employer was getting impatient. So, I made the decision. It was cool job and no free time, not liking where I would live versus what I saw as an OK job in a decent area.
Some credit to Google- thanks to the recruiter, MB for pushing things through really fast for me. I appreciate your work flying me out ASAP, and getting a response back always quickly. The interviewers were all great, and the entire Google organization is great.
As one of my interviewers said, Google doesn't want to be a huge company with huge company politics, overhead and such, but it is getting dragged kicking and screaming toward becoming a huge company. The next IBM as I see it. However, they still have great products. Great tools. And one day, maybe they will have to change into a regular company who has to work on products that generate income, rather than the free services (blogger, gmail, search, etc) that most people know Google for. For now though, I was happy to see a little bit inside the huge and different monster that Google currently is.