Pros
- People are friendly, approachable, and helpful. It's not uncommon to see employees socialize together outside of the office. - Monthly lunches - Flexible benefits - Powerful workstations and dual monitors - Can connect to workstation remotely - Subsidized sports teams and fitness subsidy - You get to work on interesting problems and as a result the work week goes by quickly. - Senior and lead developers are very competent. It means that the software developers are able to learn good development practises.
Cons
- Although there is good harmony within teams, there isn't a lot of harmony between teams. Support with support, development with development, sales with sales, etc. - The job requirements for senior developers are very demanding. While this ensures that competent people are leading the development teams, it means that there is a large gap between software developer and senior software developer. I haven't seen many promotions from software developer to senior software developer.