Pros
I work with a lot of smart and talented people. They bring a wide range of skill sets and we're pretty good at sharing our tribal knowledge. I've probably picked up as many skills in the last two years as I had in the previous ten. There's not a lot of dead weight. Everyone has something to offer and everyone works pretty hard. They're all really into it. Efforts are made to spread knowledge. We're expected to be pretty self-sufficient, self-motivating and self-starting. We support a good product and we support it well, so it's something to be proud of. The compensation is pretty good: a decent salary and a fair amount of stock options at a good strike price. They hooked me up with a decent laptop and they pay my phone bill I've developed some pretty satisfying and constructive relationships with our customers. Being able to work with various companies, governments and academic institutions, It keeps me in touch with different architectures and implementations. I get to work with diverse customers, servers and networks every day. The end users are mostly pretty sharp, experienced, senior administrators. The complexity of the product allows me to explore a lot of different things (networking, databases, code). It's fun, but it's quite intense. The folks at this company can party hard, but there's not a lot of slacking off when there's stuff to be done. In the office, things are pretty casual. Wear a t-shirt. Grow a neck beard. Share YouTube links with your coworkers. Nerd out about Star Trek or text editors.
Cons
The 5 o'clock whistle doesn't really blow here. It's easy to get carried away with the work and miss dinner. Time and efficiency are very much of the essence, as we often deal with customers in dire situations. Sometimes calls come in at night or on the weekends. Plans with family and friends get cancelled. Keeping management and the family happy simultaneously is pretty difficult. Self-satisfaction is important, because positive feedback is virtually non-existent. Do better; do more; work harder. The workload is huge and everyone is on edge most of the time. If something's broken, fix it. If you can't fix it... fix it. Mistakes aren't well tolerated. No matter how hard you work, you will be asked to work harder. If you mess up, everyone will know about it. If you do a great job, you should be satisfied that you've done a good job, because that usually won't be acknowledged. Communication with management and other departments can be a challenge. There is a very large wall of management between us drones and the offices with wooden desks. It seems pretty top heavy for such a small company. As the company rapidly grows, things can change quickly. Products change, customers change, coworkers change, responsibilities change. All of the excitement (especially around the IPO) brings with it a certain air of unease and distrust that is sometimes palpable at meetings. Department and management shakeups seem to come pretty rapidly and you never really know what's going to happen next.