Pros
You can learn a lot in a short amount of time.
Cons
It feels like you are doing time in order to launch your career. The work is boring for the most part. The challenging problems you work on have more to do with sloppy design, lazy programming, horrible planning, than anything remotely interesting (from a computer science perspective). Amazon tries to preach this idea that you are working with the smartest people that you'll ever work with. This has been far from the case so far. Yes, there are some people there that are really brilliant, but those people really stick out since they are so rare. For the most part, the developers are solid, although they tend to be sloppy and careless. And there are some developers that actively try to avoid responsibility, make things difficult for others, or are openly hostile to people around them. Unfortunately, I've seen quite a few of these types while being there.