Pros
Microsoft is a magnet for some really talented developers, regardless of the criticism that is leveled at its product quality or lack of innovation. They do truly value quality coding and provide an excellent set of resources that will help a reasonably competent developer shine. The skills that are learnt at Microsoft are applicable outside of Microsoft and will actually raise your profile. On most major product groups, you have a tremendous opportunity to contribute to the development team in the form of improvements to the process, tools or even improvements to the product design. Finally, there's a strong emphasis on maintaining a healthy work-life balance so flexible hours are tolerated and you won't be criticised for coming in at 11am and leaving at 8pm as long as you're not blocking the rest of the team.
Cons
Microsoft senior management is one of the poorest in the industry although there's been more accountability recently with some high level firings. Decision making at the senior level is still poor and has contributed to the lack of innovation. There's simply way too many levels of management in most product teams and this impedes most communication and internal improvements. The most effective teams at Microsoft tend to be smaller groups that work independently of major products and are run by a competent product unit manager willing to isolate the team from the upper echelons. And the compensation and review process, although not as bad as that in most other large companies, is still a frequently criticised and haphazard process. Most promotions tend to be on the basis of politics and need rather than genuine effort.