Pros
Amazon has a great international presence and as such employs a vast variety of people. As a result, one meets and interacts with people from myriad backgrounds and nationalities, one gets to travel and experience this multi-national flavour. The company has a very rigorous attitude towards software development. There is a well-established discipline of testing and deployment. Amazonians are very particular about how every feature/upgrade effects the customer, whether internal or external. As a hard core technology company, it uses state-of-the-art technologies and provides various opportunities in various aspects of software engineering. The company also provides internal training if one wishes to learn some new technology.
Kontras
Many teams are split into multiple sub-teams based at different geographical locations, in fact in different countries. The difference in time-zone and the inability to conveniently meet face-to-face introduces delays and sometimes, miscommunication. Since every team is mandated to support their software and almost all software is in the form of internal services, every team member has to perform on-call duties for addressing emergency bugs. This can be stressful as an emergency bug report can come in any time during the day or night. Also since most teams are small, the on-call rotation is quite frequent.