Pros
First off, I think the best part is the people. Everyone I've worked with is super talented and easy going. People at all levels of the company are freely accessible and approachable. For example, I think anyone in the company would feel comfortable having a conversation on any matter with C levels. They are incredibly intelligent and considerate. I also like that I can easily interact with sales and support to have a pulse on what feature requests seem to be trending and what problems are prominent in the field. This communication helps me validate my work from the customer up. The second best part is that you can work anywhere in the technology stack. There is data science, computer vision, non-trivial math, UX, web tech, high performance networking, graphics, kernel work, HALs, driver work, hardware debugging - it's all there - not to mention multiple platforms! If you show an aptitude, I'm pretty sure there is a place you can have impact. Regarding team structure, we have a pretty good organization to support our suite of products. For example, there is a support team, QA team, dev ops team, back-end engineering, front-end engineering, UX design, research team, IT, etc. This helps keep things on track. Shout out to our VP of engineering for excellent team engineering. The benefit of our engineering structure is that subject matter experts (SME) can develop. Further, code reviews are required (for merge/rebases into mainline branches) so it is convenient tap into these SMEs where applicable. I am always amazed at how careful a look they take - it really emphasizes that the focus here is quality and information sharing. When something goes wrong, it doesn't matter what caused it - teams take accountability and work together to find a solution.
Cons
Traffic during Rockies games? Impact paralysis?