Pros
Stepping up to major technical challenges with small, smart teams is the best possible way to master your trade, if you're the self-improving sort. Good pay and benefits, mostly a meritocracy where good ideas are heard and acted upon. I personally grew by leaps and bounds here, faster than studying at elite universities. Lots of autonomy for senior devs here so long as you can justify what you're doing.
Cons
Overall direction of the company changes a lot which is a con for some. Personally though, this made many of us a lot better at maintaining our codebases in a dynamic way. Not the greatest place to work if you're not ambitious. Indeed, there's a few negative reviews of the company here from a handful of developers that were let go for not keeping a reasonable pace over a long period.