Pros
The work can be quite challenging and therefore very interesting. Some of the software engineers are very good at mentoring junior developers.
Cons
There is an extremely high turn over rate, at all levels, Senior Management, Software Engineers, HR and FSO. On-boarding is very disorganized and paperwork is lost or misplaced (including very sensitive personal information). Salary and benefits are mediocre given the volume of work individuals are expected to carry. There is no career growth, when openings occur, people are hired from external sources. There are a few senior engineers who are expected to mentor many junior engineers while maintaining a heavy workload, this leads to no work\life balance. People are expected to work many hours (more than 80 a week in some cases) and not always record these to maintain profit margins. Several senior managers have never supervised anyone and are placed into these positions without any training. This has led to quite a bit of tension between engineers and program managers. Several micro-manage while others are completely hands-off, there is needs to be more of middle of the road approach so engineers have consistency across projects.