Pros
A few people have extensive expertise in their domain, and you can learn a lot of details from them. Massive infrastructure is to develop reliable and well-tested solutions. Social events such as regular hackathons, happy Fridays, and charity. VHI insurance. Free snacks for daily carb-loading and stress binges.
Cons
Completely rotten culture. (Or don't mind seemingly happy faces.) Having engineers at the top compensates with a lack of management skills. The team leads don't want to take any management problems and simply ignore them. Toxic individuals spread negativity around, dismiss everyone in front of the whole team, and then chase them with microaggressions. I, personally, had to visit mental health specialists and was about to proceed with a legal case. The management is totally disconnected from HR. No proper investigation is done in case of harassment. Reporting doesn't help, and incidents are turned in favor of management's friends and their favorite employees. There are no hikes. Management doesn't trust their employees and discuss neither current level nor career perspective. You are treated as a child, and you are being parented by someone "wise". You won't be able to build long-term plans with such company. Don't ever think about an L1 visa; the company doesn't offer it. The company structure is not flat and full of politics. Being ambitious and enthusiastic is not welcome. You can start a side-project, approved by the CTO. However, you will experience huge pressure from people playing politics and trying to break you mentally. Don't expect any transparent communications. Everything will be decided without you just like you were a small child. Most people prefer to hold their places quietly and stick to unspoken rules of authority. They have no courage to support anyone. Although infrastructure is great, it is really slow, doesn't allow fast iterations, relies on a proprietary SCCS, and morally obsolete. Hackathons are a joke. Their purpose is to entertain employees with silly gaming projects or never-finished projects: no real engineering is appreciated. If you are a C++ developer, don't waste your time. Otherwise, you will have to use only a tiny subset of C++. Furthermore, you will be forced to use a proprietary language that gives you non-transferable and completely useless skills for your further career.