Pros
* Good work/life balance. * Teams are somewhat autonomous. * Using kanban and XP (test driven development, pair programming). * Engineers are for the most part technically competent. Some are excellent, well rounded engineers with a strong focus on the end-user and the product. * You can use 10% of your time for personal and professional development.
Cons
* Separation between engineering and "the rest of the business", feature factory mentality, communication with stakeholders is sometimes strained. * People (esp. managers) waste an inordinate amount of time making plans. * Because of this separation, teams are not encouraged to solve business problems and instead treat code as a playground. Overengineering is rampant and a huge source of waste. * Some teams suffer from people split along frontend/backend engineering lines with a "not my problem" attitude. This problem starts with hiring and there is no appetite for changing it because of how disciplines are organised. * HR policies are often opaque and inflexible. * Unless you're able to negotiate a decent salary going in, you'll be out of luck. Company is stingy with salary as well as perks. * Outdated (and sometimes absurd) attitude towards remote work despite the fact that teams are spread across two, sometimes three countries.