Pros
The people like having fun -- it's easy to make friends here. Interesting technical challenges.
Cons
Poor management in software engineering. They claim to be "agile" but there is nothing agile about the way they work -- it's really "waterfall" style sprinkled with scrum meetings. I worked on several projects. We spent hours upon hours planning and re-planning entire projects 6 months into the future. When the schedules inevitably slip, we cut corners and cancelled test automation work, requiring entire teams to run manual regression tests on nights and weekends while last-minute bug fixes trickled in. Promotions don't make sense, they're usually based on who makes more noise rather than actual contributions. Retrospective meetings were mostly a facade -- managers didn't welcome negative feedback. Suggestions for improving the development process were often discouraged and frowned upon. People got made fun of by managers for thinking unit tests were a good idea. Technical debt is rampant, even in services/tools that should be long-lived. Good user experience is not prioritized, resulting in bad products that fail in production. Individual contributors clearly not valuable as people to management, treated like interchangeable parts.