Pros
* Possibility to develop your career. An engineer can become a manger if s/he chooses to. * Flexibility to switch teams. * Really nice culture. There is a noticeable amount of trust bestowed to everyone. * Your team is given freedom to take its own decisions on how do you want to work. * Flat hierarchy, your opinon is taken into account (most of the time) * Great colleagues, lots of brilliant minds. Lots to learn. It can be overwhelming at first. * Lots of *good* social activities and events to help newcomers. * You don't need to ask for permission or make up excuses to take a day off or work from home for a day or two. Everyone is very understanding of work/life balance issues and time off is encouraged. No schedules enforced. Come and leave as you will (or you agree with your team). Paternity and maternity leaves are taken seriously.
Cons
* Culture and company values are not always upheld. That is, some of the pros mentioned above are not always true. For instance, even though there's a flat hierarchy, office politics do exist. Also, you (or your team) won't always have room to take your own decisions. Freedom to decide how you work is sometimes just an illusion maintained by management. For example, don't ever dare to doubt the agile coaches' methods. Note that this does not happen most of the time, but when it does it's really frustrating. * Not all engineers-turned-managers become good managers. Also, usually the most senior enginneers are the ones who become managers. Then they end up engulfed in a world of meetings and stop doing any engineering work at all, which is what they are best at and the company loses a great technician. * Company has multiple offices around the world, but culture remains heavily face-to-face focused and the miscommunication between offices and teams is apparent. If you get assigned to one of the smaller offices, you will be in hell. * Really poor internal technical documentation practices and onboarding. There is very little investment on it.. Most software is custom build so previous work experience does not help much. Knowledge is spread by either personal experience (you own the service and maintain it, therefore get to learn it) and mouth-to-ear (by collaborating with other teams). Those who have been in the company the longest and have had the change to work in many teams are who hoard most of the knowledge of how everything actually works, while newcomers struggle to keep up. * The company's take on knowledge sharing is "put people together and wait for the magic to happen". That does not always work and is a very slow and expensive method. * Salaries are a bit on the low side, specially compared to other tech companies.