Pros
Top company. Good health benefits. Work life balance is good. Opportunity to work with some of the top people in the industry and learn a lot. Plenty of teams within and many interesting projects to work. Internal transfer between teams is allowed (compensation and level wont change even though you have the experience) so you can get a diverse experience (server side stuff, devices etc. ). As long as you have the skills you can also try out different roles like SDE, SDET, and PM. Some of the teams have excellent software engineering practices. It is easy to find rental accomodation closer to the company which is an upside for me. Great for junior and college hires.
Cons
Middle level candidates (4-6 years experience) usually dont get the compensation and level they deserve. Many times new college hires earn more than experienced candidates. When joining please do your homework and negotiate a proper level and compensation. Once you are in it is almost impossible to reach your expected level. Even though management says promotions are based on contributions and not based on the time served in the company in practice it is actually opposite. Yearly performance reviews are absolute waste of time. Many of the first level managers (leads) are horrible. They do not have the technical or management experience and experienced ICs have a hard time working for them. Not so nice weather in seattle area.