Avantages
Outside of the work itself, you are treated very well.
Benefits were good, very good considering the size of the company. In general, as well as it can be considering their small budget.
The people are great and the team is one of closest groups I've been with. The company even pushes for group lunches and non-work group activities.
Generally they are willing to work with everyone on the team during design. Which shows compared to other competitors.
Flexible schedules and lots of leave.
Inconvénients
Two sets of layoffs. It's a big problem. Both times were unannounced, no word from management, etc. Both times were almost 50% of the staff. And it's dictated by board members. Several of the management day they had no idea it was coming until the day of.
Tech is complex. Be prepared for a learning curve with an unfortunate lack of comprehensive documentation.
Lots of favoritism between engineers. This will translate into preference of work, promotions, days off, and all arguments. Sometimes they will take the favored engineers designs without consulting the rest of the team. Meaning everyone has to learn and conform to an engineer who is fairly weak due to favoritism.
Some of the management are very behind tech wise. Most of the senior engineers don't know the language they're working in very well. And will often push older patterns or paradigms from other languages and punish heavily for not following their scrum-kanban process to a T. Not doing comments on tasks correctly, not moving tasks in swimlanes, etc will get write ups and even fired.
Could have better communication between management and engineers. Sometimes even senior engineers get buzzword answers rather than real explanations from senior management.