Pros
1) If you work on the windows group you will get access to millions of lines of heavily cluttered code and within few months you will develop this ability to work through such complicated and convoluted code and In future someone who has always worked on a clean code base competes with you they will struggle whereas you will shine :) 2) If you leave msft to a different organization whom msft perceives as a competitor [the other company may not reciprocate this perception :) ] then they will pay you in full for your entire notice period and also waive off the notice period. So you get amazing benefits when you leave :) to the right company
Cons
1) Heavily bureaucratic 2) Manager centric performance system.. This performance mgmt system is that which is tailored to manufacturing shop floors and not to a collaborative software development company. What you need is a peer review system not a manager centric system. 3) Engineering systems within microsoft arent even remotely close to those @ Google or Facebook or Twitter wrt to the exposure that you can get as an Engineer.