Pros
Management pushes you to continually provide better customer products, better results, better performance from the software, but how you accomplish this is mostly up to you, so there is a lot of flexibility, chances to learn and an opportunity to help move the direction of the development if the results are positive. If you have a good work ethic your work gets noticed. Flexible hours. I've never felt micromanaged, far from it. The products offered to customers are constantly evolving, so it's always challenging. Most coworkers are great people.
Cons
No matching contributions for 401K. Some lack of cohesiveness between departments and lack of operational processes and documentation likely resulting from the fast growth the company. Though your work gets noticed, performance reviews are few, you mostly have to initiate the process if you want the feedback (and salary reviews!), but then it gets done.