Extremely rewarding, lots of personal growth
Pros
Company values are clear, all the way from the CEO, down to line-level managers. There are frequent touchpoints between an employee and his/her manager and everyone is open to honest feedback. The interview process may be long, but the attrition rate is extremely low. Product development teams work in an open, cross-functional format (programmer, testing, product owner) so there is a lot of cross-team communication and very little stereotypical specification passing.
Cons
They have built a lot of their own tools/frameworks internally. Their applications are built on top of a custom language that they have built themselves. Which makes it difficult to stay on top of happenings in the general development community. After a while, this starts to bring you down