Pros
Great experience, good people, teaches responsibility, ownership, and delegation. Adherence to standards. Flexible schedules. Rewarded for doing good work through promotions. Good benefits. Strong adherence to agile / scrum practices when I was there which worked well. Lots of learning experience and interesting coding projects.
Cons
Health insurance benefit was increasingly expensive. A few legacy systems that need to be maintained that "nobody knows about" or "that one guy does this". Customer demands interrupt sprint work.