Pros
Google’s software development environment is top notch. Fast tools, interactive testing for huge test suites, and a plethora of static analyses that catch mistakes during code review. People are very professional-respectful communication, focus on quality and making the right decisions. The pay is significant for sure, and there are free resources for financial planning help.
Cons
The company is huge, and teams are fiefdoms. For better or worse, Google is a bottom-up company. People with the least amount of experience influencing others are the ones tasked with changing technical leadership’s minds. If you have inter-team dependencies, or worse external dependencies that need to change for your project to succeed, then you can get stuck begging for just a meeting to discuss a proposal that almost always will get a, “that sounds great but we can’t spare the resources to help, even if you make all the changes yourself.” It is absolutely true, too. Google Cloud serves external customers foremost, so the financial incentive to help Google core improve internal use cases from the Cloud side is pretty nonexistent. Getting leadership to drive top down that two different organizations need to work together is an endeavor that engineers and line managers are not trained for. What results can be years of attempted conversations, stonewalling, and goal post moving. Teams can be started with no actual mandate for their scope, so no one has to take them seriously. You need to be an exceptional technical communicator and salesperson, and your teacher will be repeated failure, not a seminar.