Pros
As long as you get your job done the work hours are flexible.
Others have suggested that there isn't any employee recognition, but I have found that if you do your job well the recognition will come in the form of a merit increase.
As a software engineer I often have the time to investigate new tools and technologies.
Cons
The engineering team wants to be agile but either the product management or senior leadership teams aren't interested or aren't willing to transition, so we sprint but we're really not being agile.
Career growth is lacking. I get that it is up to the individual to drive their career but when your manager is supposed to work on development goals with you and never does: that is on them.
The company lacks any sort of incentive mechanism to recognize hard workers. We have stock options but there do not appear to be any plans to go public, there are no bonuses, and the company doesn't match any 401K contributions.
Finally, the company is old enough and has enough smart people that we can make educated and informed decisions regarding corporate direction, unfortunately I appears that we are still at times making decisions based on hunches and intuition.