The good:
ESP at $308 as of 2009 Q1;
High propensity of getting a bonus: approx $8000 per year;
401k match;
Free food;
Friday TGIF with beer and wine;
Smart staff;
All of this will make you feel like a "hundred bucks" but... [read more below]
The bad:
Office - imagine an open space with 10 people sitting next to each other and working, taking calls and other. Some senior engineers are having hard time to focus while surrounded by jumpy, loud talkers who have problems to stay put for 30 minutes at the time.
Project management - incoherent management of projects, lack of discipline and launch schedule. It's very hard to estimate what and by when project will be launched. There is no one to enforce some discipline on code quality and stability. Launch delay quarter after quarter. When accountability finally comes and the project risks of being canceled, I see desperate launch push and poor code quality.
Projects/Work - Google is primarily an advertisement (instead of technology) company. The web search infrastructure is awesome however only need a relatively small number of people work on that. The available projects for most people, especially in satellite offices, are limited and not technically hard-core. If you are a senior and talented engineer, you may not find a local project that allows you to focus and solve hard challenging technical problems. It also becomes harder to find other senior talented engineers that you respect and love to work on, given senior engineers are leaving and junior engineers are joining.
Managers - Mid to senior level managers are dissassociated from ongoing tasks or projects. Managers are unaware what each software engineer is doing. Don't expect much recognition. Majority managers are not technically strong and write zero or negligible code.
Don't expect technical guidance or leadership You will neither see much career mentoring nor other technical couching. I had 1:1 with my previous manager maybe 3~4 times during the whole year period. Despite being the project manager, all his involvement was to attend a few meetings - just to claim "grand" contributions during all hands staff meetings.
Career growth - Despite the peer review model, the manager's feedback appear to be what really matters. Engineers who suck up to their managers are more likely to be promoted. If you are hard-working engineer that is able to and like to solve hard problems independently without making superficial noises, and expect Google to recognize your contributions, you will be very disappointed. I know some of such solid and senior engineers; about half of them already left Google. This is very counter-intuitive given the perception people have about Google.
Engineering quality - I am disappointed with the code quality of my current team. Despite Google's code review standard and practices, too many times people hastily touch existing code or add hacky code with no real testing. Such code checked in and deployed to data center. Overall it requires a lot more unnecessary iterations and bug fixes to stabilize the system. I don't mind working 60 hours per week at all but it is frustrated to see most time wasted dealing with silly buggy integrated system. There is no engineering process to ensure code quality and stability or make a launch date more predictable. I see a general lack of engineering discipline and experience to implement very solid code from software engineers with no or just a few years experience.