Auto Ads by Adsense

Booking.com

Wednesday, August 04, 2010

Experience

In a comment on my previous post, a reader wrote:
Maybe you can write another post: To work for google or not? from the perspective of experienced engineer or fresh graduate.

I felt that it was a big disadvantage to work at google of you are an experienced engineer with master degree, because you will be hired into with almost the same level as fresh PhD, and had to learn those proprietary frameworks. Your experience does not have much advantage. Numerous review process will frustrate you a lot. Those engineers who joined before or around 2004 have already took good positions, you need to contribute 500% to approve yourself. Climbing the corp ladder becomes more challenge and google stock price is flat. Joining start up seems a better choice.
I disagree that the proprietary frameworks is a big deal. As distributed computing becomes more common, I think Google's way of doing things will become more common, not less. Already, companies like Cloudera are trying to popularize (through Hadoop and other open source implementations) the way Google does development. I wish Google had open sourced more technologies, but I certainly didn't mind learning new stuff, even if I had to fix lots and lots of documentation every time I had to pick up a new framework. Google had cool frameworks, and I certainly enjoyed being able to deploy thousands of machines at once to work on a problem.

It is true that there's danger in joining a company structured like Google. A company transitioning from a startup to a big established firm tends to use experienced engineers in very different ways than new people. For instance, it was experienced engineers at Google that forced a very different approach to testing. That was a thankless job, but people did get rewarded for it, though not without a big fight. Similarly, I had to establish a release engineering team at Google from scratch, but in exchange for that I was adequately compensated. A different engineering management structure than Google's might be more likely to reward (in traditional manners) the kind of non-sexy work that kind of work entails, but pre-IPO Google was quite generous, and those of us who joined pre-2004 had nothing to complain about. Note that Facebook, for instance, is taking an entirely different approach to this type of work than Google did, and I think that's a very good thing.

A fresh graduate, by contrast, can't be put on the un-sexy projects. So almost by definition the probability of being assigned a high profile project is higher. Furthermore, Google can be a great training ground, and the degree of reviews and mentoring (depending on the luck of the draw, of course) is a big help for at least the first couple of years. I would definitely recommend Google for a fresh graduate today. Having Google on his resume is also a much bigger deal for a fresh graduate than it is for an experienced engineer, who has presumably already had several success stories on his resume. And if after a few years it's clear that you're not on the fast track (you'll know within 24 months, usually), then you can reassess your position and look for a new job with the security of Google's excellent benefits package.

Let me tell the story of two experienced engineers who did not take a Google offer.

Y was a friend of mine from graduate school who interviewed and received an offer from Google in 2005. At that time, the stock price was around $200/share, and he was interviewing at Microsoft at the same time. This was a highly experienced engineer who had already co-founded a prior startup and sold it at a number in the 8 figures. Unfortunately, Google treated him like any other fresh engineer and put him through its standard interview process. He did well, but was not impressed. Microsoft treated him like a potential software architect, and put him through an interview process where everyone on his interview panel clearly understood his previous work and could quiz him about it. Unable to trust that what looked like an insanely high stock price could go up higher, my friend took the Microsoft job. After a couple of years, he realized Microsoft was far too big and difficult to change even at a very high level, he left and started another company. I think he had minor regrets about not joining Google, as I think he would have done very well at Google, since in 2005, entrepreneurial people were still having a blast. But given the way Google interviewed him, there was no way Y could have know that!

Fast forward to 2010, and another friend of mine started a job search. She reported to me almost 10 years ago at a previous startup, and was a brilliant engineer, so I vouched for her on a mailing list to help kick-start her search. Within 2 hours of my sending out an e-mail she had 5 contacts from startups. I asked her if she would consider Google, and she replied with two words: "No upside." This was someone who had worked her way up to being a Principal Engineer at a major Silicon Valley technology company. Her reply referred to two things: Stock price (at $500+/share earlier this year, the stock had room to fall and did fall), and the slotting lottery. Nooglers go through 6 months of training and work, and at the end of it get slotted into a position on the engineering ladder. If you're fresh out of school this is no big deal: starting at the bottom is expected, and if you get slotted higher it's a pleasant surprise. A Principal Engineer getting slotted at anything below that would essentially be getting an unpleasant surprise, while getting slotted at that level (which would be exceedingly difficult, since you'd have to prove yourself in 6 months while working on your starter project) would garner a "That's but to be expected." You can see why X chose to take a position at one of the Silicon Valley startups that was profitable and growing quickly. At the very least, the pre-IPO stock would be worth something. I think X made the correct choice for her career. Incidentally, I heard a story that a senior engineering candidate objected so strongly to the slotting lottery that management made an exception for him: by making him a director with no reports. I have no way to confirm this story one way or another though.

In short, there is no simple answer to the issue as to whether an experienced engineer can do well at Google. Obviously, one can. However, I would definitely not take on the risk of starting at Google as an experienced engineer without adequate compensation (i.e., don't take a pay cut) and without considering all my options. Given that the valley today is in the unprecedented situation of having quite a few highly profitable pre-IPO startups, I would be very surprised if a smart, experienced engineer could not get better compensation elsewhere. Hence most of Google's new engineering hires come fresh out of school, through an acquisition (which is one way for Google to acquire experienced engineers at a high price), or from one of the non-Silicon Valley locations where competition for talent is lower.

6 comments:

ArC said...

"Furthermore, Google can be a great training ground, and the degree of reviews and mentoring (depending on the luck of the draw, of course) is a big help for at least the first couple of years. I would definitely recommend Google for a fresh graduate today. "

Wait, but didn't you also recommend that people at Google not mentor newbies, or at least not spend very much time doing so? =)

Piaw Na said...

1. Not many people will take the advice in the previous post seriously. There are many reasons for that, chiefest of which is that it's far easier to prescribe than to execute.

2. The pre-IPO Googlers or Googlers who've gotten big payouts don't have to care about their careers, so they can serve as excellent mentors. If you're lucky enough to find one of those, leverage their experience and expertise. (And yes, if you ask people I've mentored, you'll find that I didn't follow my own advice... But it also took me a while to figure out what was going on come promotion time)

In any case, in the context of this blog post, the important thing to note is that the calculation for whether to join Google is very different for a fresh graduate versus an experienced engineer.

Anonymous said...

If you have a PhD, then understand that the PhD is a complete waste if you go to the big G. Google is NOT a research company. You have no idea how many PhDs complaining about doing bullshit frontend/maintenance/integration work today. Perhaps they have background that would have been help in early stages of designing and implementing infrastructures. The reality is that today, most of the work is 1) frontend frontend frontend 2) integration with an acquired company 3) maintenance 4) micro-optimization on ad serving. You don't need a PhD for frontend bullshit for integration work, and for maintenance crap.

If you have a MS degree? Maybe it's worthwhile. It really depends on your ego. You will do the same work as BS guy. The MS is somewhat wasted, but the knowledge you gain at the big G is still invaluable for your startup.

If you have a BS and you're freshie? G is an awesome place. GO FOR IT.

Just my 0.02

P.S. Facebook is a GREAT place to go to. The people are smart and excited about their work. It's just like early pre 1500 employee Google.

Piaw Na said...

By all accounts, getting a PhD (esp. in systems) requires a lot of scutt work that's not directly research related as well, so hopefully that's not a surprise to the fresh PhDs. And some people do get to work on their topics of expertise.

Isaac said...

Hi Piaw, as a former Googler I enjoy your blog---and particularly the posts about Google---very much. I've been blogging my own observations and reflections too.

I disagree with you on the proprietary frameworks point. I wrote about this exact topic at http://isaach.com/2010/03/learning-or-earning.html, the key for me being that on a homegrown stack "it takes longer to migrate acquired companies to your platform. There's no liquid talent market into which to tap when hiring. Maintaining a custom toolchain becomes burdensome. You risk making your engineers feel like outsiders in the broader tech community—ironically despite the hyper-advanced technology with which they work. Your existing employees may even resist or resent developing skills which aren't marketable elsewhere".

Yes Google's way of doing distributed computing will become (is in fact becoming) more common. And the basic principles you learn at Google are universally applicable. The implementation details are not, though, and you're not there very long before you're mostly learning things which are completely Google-specific. IMO, of course.

Thanks again for the great writing. Keep it up! I'm really loving it.

Isaac

Piaw Na said...

Hi Issac, thanks for the very interesting pointer to your blog. I think the implementation details are interesting and also worth learning about. For instance, even Google's bigtable infrastructure wasn't hardened until Google started building indexes with it. Yes, you end up finding all sorts of bigtable/GFS/RPC specific bugs, but the type of bugs you find are definitely the kind that you would find in any other kind of generic system. It's just that the open source implementations of those systems haven't been deployed on a large enough scale to encounter such bugs yet. (We found data corruption bugs caused by cosmic rays for instance)

The liquid talent is potentially a problem only if Google ever became a less than desirable place to work for top graduates at top universities. It could very well be that Google will start to feel pressure now that Facebook is also becoming known as an attractive place to work.

I like your point about the cleverness of Google technology. What's interesting to me is that the clever technology isn't actually more efficient. As I point out in my post about infrastructure, there are many startups operating at a higher efficiency despite not using the fancy technology.

Ironically, the main advantage of Google's fantastic infrastructure is that it enables rapid development of highly scalable software services on the web. The irony is as follows: by the time Google had refined this infrastructure, it had gotten so big that the bottleneck to launching and sustaining new services was no longer the technology and technical side, but on the business process end. And it turned out that Google wasn't attacked in this space by companies that had figured out how to do scalable computing in a more flexible and highly customized fashion, but by companies that started out at such a small scale that PHP-level of scalability was sufficient to bootstrap it and launch it into the big leagues through its understanding of how society and humans interact with each other.