Pros
You must get your hands dirty here; you are not tied to endless meetings or to reviewing boring documents. You'll be developing code that forms part of the products on offer. For this reason, it's a brilliant place to flourish from a fresh graduate to a hardened software engineer, warts and all. There is a freedom to work independently without an overbearing management culture. You are given a responsibility to deliver but nobody is checking in on you continuously. Every employee, irrespective of their position in the hierarchy, is offered a voice on how to improve the company. The management is very supportive when your working arrangements do not fit into a normal 9-5 pattern.
Cons
There are too many fingers in too many pies, which stretches the company to the limit of its resources. This has a negative impact on the quality of products delivered to customers. Sometimes it feels like the company lacks a vision of what it wants to be; it looks outwardly too much for its definition.