Great training opportunities and a surplus of study resources. Ability to work remotely. Great place to start for entry-level developers.
Cons
Little room for growth. Lack of communication from upper management. Poor compensation hikes and bonuses. Possibility of being on "bench" for extended periods of time (months).