Ventajas
Teams tend to be very small and they work fairly independently from each other, which helps keep things moving along quickly. Teams also own their business, which means individual members can have a large impact on what the team produces and how their business grows. Most of the people you work with are very smart and produce quality work. Amazon's business and scale provides has a huge variety of problems to solve (it ranges from building cool web applications, to optimizing order fulfillment and shipping, to personalization, to web services). If you are unhappy with your current team, odds are there is a team elsewhere in the company doing something you find interesting. Internal transfers are fairly easy and happen all the time.
Desventajas
The model of having many small independent teams has several downsides: - There is often duplication of effort because you can't convince a team you depend on to prioritize work you need, so you might end up doing it yourself. - Most teams do not have dedicated a support or operations team. This means SDEs are responsible for deployments, operational issues, selecting hardware, etc. Most SDEs are part of an on-call rotation.. when they are on-call they have to carry a pager and need to be able to respond to pages within 15min. The frequency and intensity of oncall varies greatly by team. - There is a huge variance in quality of life depending on what team you're on. If you work on a team that has a heavy ops burden or owns a lot of bad legacy code, you will probably hate it. In terms of culture, Amazon is a very frugal company. No extravagant benefits, fairly cheap office equipment, etc.