I'm a husband, father, author, cyclist, sailor, travel addict, and former Silicon Valley software engineer. I've written 3 books and actively review books on this blog.
Comments on this blog are aggressively moderated against link-spam and rude or meaningless comments.

Monday, August 02, 2010

I'm surprised by the number of people inside Google who actually read my blog. I once did contemplate writing a "career guide for Googlers", but finally got off my ass when a Noogler asked me for advice on how to thrive at Google. Given that Google is once again on a hiring spree (something that I'll never agree with), I guess more people will want this advice than not. Obviously, you should take everything I say with a grain of salt, since things change rapidly at Google. With that caveat in place...

Disclaimer: Sanjeev says (and I agree) that if you internalize all this, it will make you less likely to succeed at a startup! Being able to do well at a big company and being able to do well at a startup are completely different things!

Tip #1: Never believe anything management tells you. They don't lie deliberately but frequently things change very quickly, so what's true one day is not true the next. I knew someone who gave up a tech lead position because he was told his group would have no manager, and therefore he was doing all that extra work for nothing. Within a couple of quarters after he gave it up, management made the new tech lead the manager, because things had changed.

Keep in mind that management wants things that are good for Google. You care about what's good for you. The former does not automatically lead to the latter. In particular:

Interviewing. It absolutely does not help your career one bit, even though it's absolutely critical for Google in the long term. It's not rewarded, considered during the promotion process, and it burns a lot of time. Put it off as long as possible. And don't even bother with hiring committees. That's even more of a time sink.

Mentoring other googlers. Just like interviewing, it is under-valued and not considered real work when performance reviews come up. Even worse is rescuing someone on a PIP. Unless you're a manager, don't even spend time on that. If you succeed in rescuing that person, he did it himself. If you fail, you've wasted a ton of time. Only managers can get any credit from this, so decline any requests to help.

Changing projects. This helps Google by spreading knowledge around. The reward system, however does not reward this. The way to get promoted is to stay at one project for a long time, not to switch projects every 18 months, as management might sometimes tell you. (Note: if you want to switch projects, the best time is right after a promotion)

20% time. Depending on your manager, it could absolutely hurt your career. triple check to make sure your manager does not take a negative view on this. I liked my 20% time, but I was well aware of the trade-off for my career I was making.

Tip #2: Google's full of distractions. Take as many of those off your plate as possible while you're ramping up. In particular:

Don't subscribe to misc. Mailing lists are a big time sink. I never felt hurt by not reading misc, misc-mv, or eng-misc.

Set a limit on the number of tech talks/fun talks per week that you should go to. Try to stay under that number. I'll admit I didn't always succeed.

Tip #3: Nothing matters as much as getting a high performance rating. Ask your manager how this system works. Ask him how to get a high rating. Do whatever it takes. Doing so nets you:

the best projects, and your choice of projects

faster promotions and more money

"secret" founder's awards (they're not very secret because people brag to me about them)

respect from your peers (comes along with the promotions)

Tip #4: Pick a really good manager and/or tech lead. Internal studies have showed that your performance at Google is tied very strongly to who your first tech lead is/was. The best tech lead that I know personally at Google is Arup Mukherjee. A good way for you as an engineer to judge tech leads is to see how many of their reports get promoted. If they don't get their reports promoted, don't work for them. Arup was very good at getting his team members promoted. One manager I know forgot to check the "promotion" check-box for his team members during promotion time. (The poor guy should have checked it himself --- he ended up hitting the salary cap for his level) You can tell who had his priorities straight. You can also try to work for a politically powerful manager/tech lead, but some of them could be hard asses and tough to work for. The big picture: Google rewards hard work, but much more importantly, high profile projects. Never sacrifice a chance to work on those high profile projects versus equally important but unsexy maintenance tasks that will get no respect from promotion committees. Google does not reward the maintenance work, no matter how important it is (Exception: War-room firefighting. Google loves those, and loves heroic performances from people in war-rooms). In particular, if you're stuck doing SRE work but you're a SWE, you need to negotiate your way out of that. In any organization, there are work horses, show horses, and horses' asses. Most people have no trouble figuring out how not to be the 3rd. But it's far better to be a show horse than a work horse. You get all the rewards with less effort. It is rare that the Raymond Chens of the world get rewarded for the effort they put in. (Yes, and Microsoft at its best was smart enough to do so)
Finally, if you get fed up of working for a big company, consider joining a startup.
[Update: Looks like there's actually a high quality translation of this page in Chinese]