Pros: strong communication from the top, subsidized gourmet lunches, open floor plan (collaboration)
Cons: sub standard compensation, management politics, open floor plan (noise)
The CEO is excellent at selling, and sells our product well to new hires and employees alike. This creates a strong sense of cohesion and community in the company.
A typical day starts at 8:30 am (and runs till 5:30 pm). Get in, review what I worked on yesterday to reinitialize mental state, prepare for the day's work, and then go to the daily stand up meeting for the team, where we all sit and share our accomplishments of the past day and plans for the day. After that it's headphones on and get your code on until lunch. Feature finished, log it in the bug tracker, commit and push it to git, pat self on back, and move on. Lunch I take in the cafeteria, and it's delicious. After lunch, it's back to headphones on coding until the end of the day.
I've learned a lot about software teams, and how we can work together and spread out the work to get things done. I've also learned how to build things quickly when important, and continued to refine my ability to clean up things that were written quickly.
On the whole, management tends to be easy to work with and willing to trust employees to do what they were hired for - being awesome. The best advice I've found about management is - if you don't have fun during the interview, you won't have fun working with them. That said, the CEO typically conducts (or did) final interviews for new hires, and he is fun to be around.
Coworkers tend to be skilled and competent. There are outliers on both sides, but overall I have been quite satisfied with the competence of my coworkers.
The hardest part of the job is dealing with the gobs and piles of software that we've written, interfacing always in interesting ways. The most enjoyable part is pleasing customers - internal or external, making something awesome is a really enjoyable experience, and one that I've had the pleasure of often here.