I have worked at Microsoft for many years, first as an FTE then as a contractor (v-) so I have seen both sides of the coin.
Middle management is made up almost entirely of engineers instead of managers. While it can be nice to have managers understand the technical aspects of a project, very few good engineers go on to become good managers. Unfortunately, Microsoft almost never puts managers back into an individual contributor role unless the person specifically requests it, meaning bad managers get shuffled around leaving discontent in their wake.
Work-life balance can be seriously out of whack in some groups. This goes beyond the normal crunch-time chaos; multiple projects + hardware development builds every 4-8 weeks can easily lead to 6-12 months of 60+ hr weeks. Expectations for FTEs are always increasing, making it that much harder to maintain a work-life balance. Whatever you did to go "above and beyond" in the last review period becomes the minimum bar for the next review.
The review system fosters a competitive, rather than collaborative, environment. There is little incentive to help peers succeed as each person is stack ranked relative to the others in the group as "assists" aren't tracked or measured. If something goes wrong everyone scrambles to find somebody to blame instead of figuring out what happened and pull together to fix it.
With the economic downturn, MS cut contractor pay by 10-20% across the board. At the same time, most groups have limited contractors to 40 hrs/wk, putting lots of people under financial stress. Some managers are expecting their hourly contractors to put in an extra 10-20 hrs/wk, unpaid, to get the job done. There is definitely a sense that MS is using the current job market to take advantage of people.