Pros
* Good work/life balance * Decent compensation package * Good hardware Note: Definitely not all teams suffer from all the cons mentioned below, but unfortunately some do.
Cons
* Job didn't align with the role that was presented during the interview * Slow and cumbersome internal processes - it took weeks to get relevant software and access rights set up, and little relevant work could be done in the meanwhile * Generally built around stale technologies with little motivation to innovate or move forward * Bad ad hoc architecture and a rotting codebase with a lot of debt accumulated over the years - and no incentive to improve things (partly due to a justified fear of breaking things) * A lot of churn by developers in the team * Minimal and stale documentation and little motivation to improve it - combined with the above, there were many odd edge cases in the system that no one understood * Very noisy and old office * Minimal communication between different teams * Unnecessary bureaucracy when deploying code * A lot of coworkers with little motivation to do anything but what was minimally expected of them * Lack of well defined development processes * Minimal unit test coverage, no code reviews, etc. * Micromanagement * Less than optimal facilities for remote work (via a noticeably slow Citrix connection) * Overly strict network policies and firewall/proxy