Pros
Microsoft has a deep bench of talented people with raw smarts, dedication and passion. Employees tend to have long tenures even though they change groups within the company. This makes for a work environment where there is a LOT to learn from the senior team members. This is a terrific company to get mentorship, career guidance and improve technical chops. Microsoft's wide array of low level systems products (Windows, .Net Framework, SQL Server) means that there is deep technical expertise in core computing fundamentals like operating systems, databases, languages, runtimes, etc.
Cons
The layer of middle management (dev leads, test leads) is bloated and adds little value. The specialization of roles into Dev, Test, PM limits employees from gaining skills that are transferable, since there typically aren't that specialized roles outside of MS. Microsoft needs to figure out how to utilize the SDE/T (testing) discipline effectively to infuse reliability, stability and perf into products; we need testers who are good enough to be developers on the same product. MS also needs to figure out what it's strategy is in the services space. We also need to find ways to encourage small but good ideas to blossom into compelling products; it seems like products only get created when a General Manager or a VP decides to create something.