Constantly Shifting Priorities, Poorly Trained Management, Huge Turnover
Pros
Lots of gadgets and technology to work with. Development and test teams are usually very knowledgable.
Cons
Leadership and management don't know what to do, and are more interested in proving to the higher ups that they are making some artificially designed metrics then creating good software. Constant team shake ups and project changes mean that you never develop much expertise unless you take it upon yourself. Culture is atrocious, most are only concerned with their own progress and will do every thing you can to throw anyone else under the bus. Management likes to take credit for employees work. Unsurprising, as performance is measured on a sliding scale rather then any real metrics. Good english is not required, which makes communication a big issue. Movement between roles is almost non-existent, although they use it as a hiring draw. Due to high turn over, management tends to be drawn from outside groups, and they have little to no knowledge of the project.