Very good salaries and benefits.
You will work with incredibly smart people.
Reluctance to truly embrace open source tools for development really hurts developer skill sets. For example, instead of moving to tools like Spark, MSFT builds its own tools. Most of their own internal development doesn't even use products they sell externally, like Azure. The proprietary tools they use will severely hurt you when you are looking for your next job.
The company is huge (part 1). The scope of what you will work on will most likely be small features on existing products. This might be OK from a pure C++ coding perspective, but it won't allow you to get architecture development experience, learn new tools, or if you want to do something innovative with new technologies.
The company is huge (part 2). It's difficult to stand out when there are hundreds of really good engineers in a division. There are few engineering management roles now; most were eliminated.
Culture can be somewhat forced. Small companies usually have a better culture.
Office has implemented a "Shared Engineering" model. Software Engineers are supposed to write product code, test, and develop the resulting data streams. Realistically, you will find few people who can or want to do all three well.
Management has done a fairly good job at moving development to become more agile over the last few years. To retain and recruit engineers in the future, they will need to start moving to development tools that the rest of the world is using.
Allow engineers to become experts in specific areas.
A very standard interview process for technical software engineering jobs. It started with resume submission, followed by a couple of phone interviews and then an on-campus interview loop. The on-campus interview loop mostly consisted of whiteboard
A recruiter contacted me via LinkedIn and set up phone interviews with three different groups. Two groups wanted to bring me on-site for a final interview. **On-Site Interview with Group #1:** The hiring manager openly expressed his desire to hire
A short phone conversation with a recruiter/HR led to a Skype-based technical screening/interview. After passing the technical screen, I was flown out to Seattle for on-site interviews. The morning included two one-on-one interviews, followed by a "
A very standard interview process for technical software engineering jobs. It started with resume submission, followed by a couple of phone interviews and then an on-campus interview loop. The on-campus interview loop mostly consisted of whiteboard
A recruiter contacted me via LinkedIn and set up phone interviews with three different groups. Two groups wanted to bring me on-site for a final interview. **On-Site Interview with Group #1:** The hiring manager openly expressed his desire to hire
A short phone conversation with a recruiter/HR led to a Skype-based technical screening/interview. After passing the technical screen, I was flown out to Seattle for on-site interviews. The morning included two one-on-one interviews, followed by a "