Pros
#1 for me is people. I really like working with my immediate and extended team. We have a broad set of backgrounds, experience, and skill sets. While we are generally quite busy (or overloaded) with projects, we're always given the latitude to attack problems with our own perspective (assuming it makes sense and is explainable). Additionally, I've always felt encouraged to make improvements in the process and tool chain wherever I see fit (and I've done so, repeatedly). I've had "personal" projects I've done aiming to see if I could make something better turn into primary use tools for my team. It's very satisfying to be in such an environment.
Cons
Lack of organization. Over abundance of consultants, and/or external development groups. Lots of legacy systems being used in ways not originally intended, which leads to lots of shakey workarounds.