You can learn a lot at Google and hack on things easily. There are things to improve though.
Pros
The single most important factor for me is that you can learn a lot here. You can meet many great people, who contributed a lot to CS in general. When you want to improve your skills in particular area, you can join the team that works on that area. Also the codebase is huge with multiple examples of great engineering. Google has some internal learning classes etc. but I didn't find it as useful as people, projects and the codebase. Another thing is the "hackability". With the tools we have it's very simple to start hacking on something and you can focus on solving problems. If you have an idea that you want to try, often you can have something ready within a day or two with no frustrations coming from fighting the tools all the time.
Cons
I think that internal mobility could be improved. It's easy to start to work on something as 20%, but when it comes to 100% it's a bit tricky. That means you can get stuck for a while in a project that you don't really like. Also there is certain degree of bureaucracy. Maybe it's just me, but I hate creating tickets and filling e-forms. Whenever you want to request something, you need to do those things.