Company: Microsoft
Date: 2019-02-24
Overall rating: 5/5
Employment status: former
Experience level: Confirmed

Excellent employer on the whole
Pros: If you are fresh out of college, this is one of the best companies to work for. Like many other tech companies, there's a big emphasis on work-life balance and community building. In a lot of ways, it will feel like an extension of college in terms of the learning and events with other young professionals. Senior developers are, for the most part, very happy to mentor younger people and instill a sense of discipline. Internal mobility is fantastic as well, moving from team to team is relatively frictionless and it's Microsoft, so there's a team for almost any area you want to work in. There are so many resources that there's an expert for basically anything you want to know. There's tons of young professionals around too and Seattle is a great place to live. Pay is competitive with the other top companies at a junior level.

Exit opportunities are great here as well. If you pay attention and put effort into your work, you will come out with a brand name that recruiters all over want to see, as well as a disciplined, rigorous skill set to match.
Cons: As you move up in ranks, the pay disparity between Microsoft and its competitors (Google, Amazon, Facebook) starts to grow, with Microsoft developers making substantially less than their counterparts. For some, this is okay if they value lifestyle more than career progression. For others, it's common to jump ship to another company.

As with any other big company, there's layers and layers of bureaucracy. For most mature teams, all work will be carefully planned months in advance, specced, discussed in multiple team meetings, with dedicated PMs and testers. In the beginning this is good because it teaches the absolute best, gold standard way to develop large software. After a while, it can become very dull and repetitive though.

The annual review system, which invariably involves peer feedback and encourages backstabbing peers, can be maddening. Even after spending several years here, most people will find it's hard to break off of the railroaded promotion system and really shine as a superstar, just due to the seniority-based culture and siloed nature of the work (you don't have the expertise to move into a management role or more technical area that's already being done by someone more senior, but by never doing that role you'll never build expertise).

Also your experience is hugely, hugely team dependent. Local team culture matters way more than anything that happens at top management level. Two employees at two different teams can have drastically different lives. Maybe the things I list as pros are actually cons in your team, and vice versa. Unfortunately there's no real way to tell what it'll be like working on a team until you actually start working there. You can gauge the number of young vs old developers to get a sense of the culture though.

Despite this Microsoft is still a fantastic company, no regrets after having worked here for 6 years. The opportunity to work alongside world-class engineers to ship code that all modern versions of Windows use has been a privilege.