Pros
Great pay Average benefits Brilliant people to work with and learn from Feels great to work on products that so many people use It is possible to keep working on an open source project you may contribute to, if you follow the appropriate process
Cons
Culture is somewhat ignorant about and/or resistant to use tools everyone else in the world uses. Often choosing to build its own internal tool in-house that is either buggy, "special" in interface, or just outdated. Examples: build tools, source depot, various test frameworks Working from home (from a fiber optic connection in Redmond!) is stunningly unrelaible and inefficient, at least for general development work on a large codebase. Process to approve contributing to open source on your freetime is relatively cumbersome