I’ve been there for about 5 years. You can read about the good parts anywhere, so I’ll try to offer a counterpoint based on having worked at other software companies.
A common problem is that it’s easy to become spoiled by all the perks. Several offices have developed distinct cultures of entitlement, and people whine about the quality of the fudge on the free brownies. It’s embarrassing to be around people who’ve become like spoiled children.
An engineering-specific problem there is that there’s a lot of support for operations – that is, lots of people whose job it is to keep the systems running. Engineers don’t habitually carry pagers and are on-call relatively infrequently. The plus side is that they can focus on development, get adequate sleep, and be more productive. The downside is that they can easily lose touch with what’s really going on in the data centers and sometimes even their customers. It’s a trade-off. Google is at least aware of it and uses incentive programs to entice engineers to spend time in ops roles.
Last, the company is big into “generating luck”, which means trying a whole bunch of stuff in the hopes that a few efforts will pay off. The practical net effect of this on leaf-node employees is that you can wind up working on three, four, even five or more failed projects in a row. It doesn’t actively hurt you, and in some cases they even give big bonuses to teams that worked really hard before the project was canceled. But because promotions and bonuses are generally tied to “impact”, meaning stuff that actually launches and gets used, a whole lot of people wind up spending their first 4 years there with no launches, no promotions, and no fancy bonuses. (The bonuses really are quite generous for teams who launch things that are successful.)
This may wind up being a morale issue at some point, but at the moment people aren’t so fed up that they’d quit over it. They know they can always move to a sure-fire domain like GMail or Chrome or Ads or whatever, and be assured of at least minor launches and success for a few years. It’s just that there are a lot of opportunities for startup-like success within Google, and people are encouraged to participate without being told of the potential risks and opportunity costs.
These three factors combined yield a fair percentage of employees who wind up feeling a little disenchanted, though not actively scarred the way they might be if they’d worked for 90% of the rest of the industry.
I know people are always interested in hearing the downsides, so I thought I’d be honest about the main ones I’ve encountered in my 5 years there.
That said, there are way more upsides, and I doubt I’d want to work anywhere else. I’ve turned down more offers than I can remember, but I always tell them the same thing: I have the best job in the world. (And it’s not even that great, Google-wise. But I do love my job.)
I’m not there now, but I did an internship a couple years ago. The food is nice, there are a lot of cool people, and the tech setup is pretty solid: they give you nice machines, and there are very reasonable procedures for source control, testing, code reviews, etc. Hours are flexible and there’s free beer every Friday afternoon.
At the end of the day, though, it’s a software engineering job. The vast majority of Google employees (especially those without PhDs) are essentially code monkeys: granted, very smart code monkeys working with some complicated systems, but 90% of any project is basically gruntwork, and that’s true at Google just as much as anywhere else. So if you like coding, it’s a great job.
I’ve been at Google for 4+ years and couldn’t be happier.
The free lunch is nice, but what I really love is the engineering culture:
- Google has some of the best programmers in the world. Unlike some companies where they move into “architect” roles, many of them continue to just write lots of code and do great things. It’s amazing to get to work with these people and learn from them.
- The culture here really values high-quality code. The style guidelines are incredibly strict and people are rewarded for high test coverage. All code must go through code review before the revision control system will even let you check it in. Of course it’s not perfect, but it’s way better than any large company I’ve ever heard of.
Could I imagine leaving? Sure, someday - but I’d have a hard time imagining going to another large software company. I think there are a lot of small companies that would be amazingly fun and rewarding to work at, but Google is the only large company that is really that amazing for someone who loves software engineering.
>> More posts