Pros
* Benefits: good compensation and (when you're not on-call) work-life balance. * Stability: unless you're in mid-upper management, there is comfort in working for a monopoly which is slow to truly modernize and that has ever-increasing human resource needs as clients are added. The job will go on. * Coworkers: some of the best and brightest group of people to work with.
Cons
* Micro-management: it's normal to see directors and VPs getting involved in troubleshooting client issues, often multiple times a week. This is definitely leading by example, but it also perpetuates a hero culture that is steeped in favoritism towards holders of proprietary knowledge. * Status quo: despite the overly-vast and brittle legacy codebase, nobody is willing to insist to upper-management that a rewrite is necessary and urgent. It's telling that a memory dump is often the default troubleshooting technique: in one week I've seen more of them than in all my career elsewhere. The irony is that this is vastly more expensive than the apparent cost of modernization. * Castle-building: the head of product is unapproachable to criticism and suggestions, and focuses on features rather than simplicity. The result is that the product is overly-complex to use and excruciatingly slow to run, and causes unnecessary stress on engineering just to maintain an already-excessive time-to-market. * Lack of diversity: One can predict with great accuracy the ancestral origin of the staff based solely on the team and management level. It also seems self-perpetuated.