Vantaggi
The compensation is amazing. While it's true that there are many companies doing interesting projects, the pay and benefits at Microsoft simply blow away other company. Their offers are almost impossible to turn down. Honestly, for a lot of developers, it's not the "evil empire" the outside world perceives it to be. Most folks are excited about delivering new benefits to the customers and don't concern themselves the supposed conspiracies bloggers like to discuss. If you get on a product team you really care about, your passion will help shape the solution from day one because everyone truly wants to deliver the best solutions. Microsoft lets you focus on your job with minimum overhead. You can actually spend the majority of your day writing code and not be bothered with administrative paperwork, irrelevant meetings, or any other kind of interference. Most developers meet with their managers to discuss their yearly goals, but that really is the majority of the non-programming responsibilities. A lot of product groups provide weekly or bi-weekly lectures on a technology they've been working on. These usually include an introduction, code samples and lessons learned. Not only is it very interesting to see what's going on in the company, you also get the chance to continue learning from other developers. Mobility in the company is great. If you want to change product teams, it's just a matter of an interview with the team of interest and you're set. There are no hard feelings or pressure from managers that may hinder you from pursuing your interests.
Svantaggi
The biggest problem is that it's really easy to forget about your social life. Some days you get so into coding you lose track of the time and the whole day passes you by. Occasionally there's pressure to get something accomplished quickly (especially near the end of the release cycle) and you may find yourself working longer hours than you want. Social interaction throughout the day is minimal. Most developers sit in their offices and code and don't get a lot of daily interaction with others on the team. Some days this leaves you feeling very isolated. Traffic in the area is terrible. If you don't live in the right spot and plan your commute correctly, you can lose 1-2 hours a day just in travel.