Pros
- Opportunities for some very interesting work. You never know what you might work on. - Fairly low stress environment - Benefits aren't bad.
Cons
- Constantly must look for work at work. Your time must be funded by various projects and it's your responsibility to find them. - Funding model doesn't allow for very solid software development work. Since funding arrives in dribs and drabs, most projects begin as prototypes and never end up being engineered very well. - Software engineers are second class citizens compared to scientists. Software development careers tend to top out after 10 years of so, unless you switch into management. - Forced into a network-only health care plan -- Anthem Blue Cross/Blue Shield. Not too impressed with them.