Pros
I've been at Amazon Lab126 for 6 and a half years. Joined as senior software engineer, transitioned to software dev manager, grew to senior manager. I'm on my 3rd job / project, averaging 2.5 years each. Ability to do different things keeps things interesting and allows me to learn and grow.
When I interview candidates and they ask me about our company I described Lab126 as "controlled chaos". We move fast, which may be too fast for some people. But if you like a fast pace working on exciting products, it's a great place to be. On glass door some have mentioned 'work-life balance'. I don't see it as a problem, at least not in the different orgs I've worked. In my 5+ years managing I've asked my team to come on the weekend only once, and yet we've always delivered on our commitments. Sure, at times we work longer hours, but that's part & parcel to today's working world.
We love people who can focus on our customers and who like ownership of what they work on. This means that you can have a lot of impact on your project. I've been able to visibly improve our products by innovating, showcasing updates to management, and getting them incorporated into hardware or software updates.
The engineering population is pretty sharp. Folks get things done right and improve them over time. I've had opportunity to work on device software, cloud services using AWS, and mobile apps (iOS, Android).
Cons
While I said we're fast, at times we're also slow. It may take us a while to get a new idea into production, especially if it involves a new hardware initiative or product. There is much thought put into our "working backwards documents" (google this) and getting them in front of executive leadership, and this takes time.
Annual raises are not high, although periodic compensation adjustments help stay abreast of market compensation.