Company: Microsoft
Date: 2014-03-05
Overall rating: 2/5
Employment status: former
Experience level: Senior

Not the place it once was.
Pros: Opportunity to work with some amazing technologies and very smart people. Huge variety of work to choose from across a large organization. Life as a Senior engineer can be great with lots of interesting work and you can focus on engineering not meetings and politics. Lots of chances to interact with customers if you make time for it, even when its not part of your role. Microsoft has huge resources and can afford to invest heavily in research and development for the long term, there are only a few places you can work that are really able to do this. If you want to work on massive software projects that have a huge impact then Microsoft has a lot to offer.

Lots of opportunities to take on new challenges and learn new things provided your manager is supportive and your group is growing. There are some great managers at Microsoft and they make all the difference. Find a good one and work for them, follow them around if need be. Life at Microsoft is far better when someone has your back, especially at review time.

The salary and benefits package are still competitive but not as good as they were a few years back. Campus is being modernized and the working environment is good and getting better. For a large company the day-to-day work is pretty low friction in terms of needless rules, engineers have Admin access to their workstations etc.
Cons: Big variability in culture and working conditions between groups. Some parts of the company are great places to work run by people who respect their reports and coworkers. Where people are encouraged to work as a team and do their best work. Other groups are perpetual death marches run by self-serving management. It's very hard to see the difference until after being hired. Once hired you are stuck in that position for 12-16 months. This is long enough to get a poor review which will make it harder to move.

Competitive culture encourages individuals to show themselves in the best light, even if it means making co-workers look bad or doing things that are not in the group or company's long term interests. The stack rank culture is engrained in the company, don't expect a different review system run by the same people who ran the old system to change things any time soon.

Decisions are often driven by politics and personalities. At the Principal level politics becomes more important. If you are the sort of person who says what they think, even if it is likely to be unpopular this may be your downfall. Being subsequently shown to be right will not help. The end result can be a a lot of smart people collectively making seemingly dumb decisions and building the wrong things. The Peter principle applies and often the politically savvy get promoted for all the wrong reasons. You come across quite a lot of senior people who are clearly just waiting to vest their next stock grants.

Over resourcing results in large teams and empire building. Often teams will vote to (re)build existing functionality "we built our own DB because (we thought) SQL Server didn't meet our needs". Lack of willingness to use open source and LCA's slow responses also promotes this problem. Sometimes this is due to valid IP taint issues but a lot of the time it's not. Smaller teams can often move faster because they are forced to make smarter decisions by their limited resources.

In general Microsoft has been slow to adopt the latest engineering practices. There are good reasons for this on some of their largest products, like SQL and Windows, but in many other cases it is simply a case of "not invented here" and "we're Microsoft, we're different". The fight to get newer (agile) process and engineering practices adopted on several of my teams was a long and painful one. If you want to work on smaller projects using the latest practices then choose your team carefully.