Pros
* Great culture: even though it's a big company, it operates more like a bunch of small startups/teams with a good degree of autonomy in each team and for each team member. Furthermore, employees are encouraged to move between teams if they don't feel like their current team is a good fit; Amazon views this as beneficial for both the employee and employer. So if you don't like your current team you have a great deal of latitude in finding one you do like -- and good managers will actively seek out good employees to pull onto their projects. * Great pay, if stock options are taken into account. * Path to success: if you like Amazon and are good at your job, opportunities abound for career advancement and taking on higher-responsibility/higher-paying roles. And if you don't like your new role they will let you change (back) to another role as long as you are suited for it.
Cons
* Aging technology platform: While AWS is pretty close to the cutting-edge, in 2017 many of Amazon's own internal sites and platforms do not actually run on AWS, instead using a suite of older build tools and technologies that feel very dated by today's standards. Progress is being made at the company to change this, but I know myself and many other developers have sometimes had to sink inordinate amounts of time into dealing with obscure and low-value issues with the build tools, such as being forced to manually deal with software dependencies that have little to nothing to do with the actual product that their team is working on. This represents a huge tax on the whole company's development efforts.