Pros
To begin, I'd like to say I was spoiled by having this as my first job out of school. Fantastic culture with excellent employee benefits; plenty of responsibility but only as much as you want to take; bright, talented engineers who love what they're doing; and plenty of opportunity to own products/projects and to make a real difference both in the company and to end-users. The company itself is positioned well financially, with revenues derived from a subscription model from over 2 million active customers, and is growing quickly, yet it maintains an agile, low-bureaucracy feel. Speaking of growing quickly, the employee retention is superb. In my nearly 3 years with the company, I saw very few colleagues leave. Employee acquisitions to terminations was likely 25-to-1, and higher still for software engineers. I never once felt my job was at risk, and lay-offs were unheard of. Being a public company allows for profit incentives in the form of equity and options for employees. However, going public did not affect the culture much, in my opinion. Annual company retreats are still going as of 2017, management is not focused on stock price but still focused on the long-term success of the company, etc. I'm quite positive for the future of the company. My reason for moving on was almost purely based on numbers -- that and my recognizing that a more demanding work environment would likely benefit my career in the long-run by building my skills and discipline faster than this environment would simply because I had grown too comfortable. Internally motivated engineers looking to work in a fun and secure company, to own your own projects, and to make a real difference both within your organization and in customer's lives: look no further.
Cons
Again, I was spoiled by having this as my first job out of school. The flipside of this is that the relaxed work environment meant I wasn't pushing myself as hard as I should have. If you slack on your work, your advancement will suffer but there's no real discipline or repercussion from it, so it's too easy to simply "float by". As I said, responsibility is doled out at about whatever rate you want, so stagnation is dangerously easy. (Please note that the above likely varies substantially based on team. As a software engineer, my primary supervisor/manager was my team lead, and your experience will vary based on what team you end up on.) Some internal tools and processes (namely the lack of repository branches and a build process which "sucks in" all code as-is regardless of status of that code/ticket) are dated and need to be updated. These are mostly vestiges of a smaller company and their shortcomings are growing pains of a medium-sized-and-growing company. These processes/tools are being updated, but not quickly enough. Compensation is decent but not great. A good deal of my compensation was in the form of stock options, which profited nicely as the stock price had a very strong run since IPO. Base salary and performance bonus on their own are okay at best.