Pros
They pay is great, the work is sometimes interesting, and your co-workers will be intelligent. You'll be working on something you can be proud of. The company will pay for you to continue your education, which is great if your interested in getting a free graduate degree.
Cons
Not always working on the latest and greatest technology. Sometimes feel like your re-inventing the same wheel just to sell it to the Government. You get very little feedback ever. There are some politics that go on (I suppose that is normal) in that it seems like promotions are often determined by who you know. The software engineering positions can be really boring. Software engineers are often treated as replaceable parts that can be moved around at will. Sometimes they shove process down your throat and don't let you take ownership of what you're working on.