Pros
Lots of great projects to work on and lots of great people. Mostly good, experienced people interested in the work, savvy about ego and willing to put theirs aside. Everyone is either friendly and helpful or tries to be, as time and personality permits.
Cons
For building software, they seem to believe in not having separate build and test engineers. It's good for software engineers to write tests for their own code, but it's also good to have test engineers write tests as well. At the very least, projects should dedicate time for the whole team to brainstorm and design tests together to ensure every aspect is covered. Also, there's often no org chart, no way for new people to know who's doing what. For a contractor, it's especially difficult to get to know people. And this could be easily rectified.