Pros
Even as a junior employee, you get lots of responsibility and can positively affect the lives of millions of people. You get a really good education in how to ship software. In most groups, you become ruthlessly pragmatic and realistic about what's hard and what you need to do to ship. Microsoft toughens you! Most parts of the company are a meritocracy-- smart people rise to the top Microsoft seems to, better than almost all large companies, be self-aware enough to recognize its mistakes, to get rid of executives who screw up, and to honestly understand industry trends and adjust to them. These adjustments sometimes are slow, but they do happen. You get to work with some truly talented and very smart people. Like every large company there's a fair amount of dead weight, but most of the folks you will work with are very good, and a large number are truly rocket-science smart. Microsoft's software is, in most areas, better than it's ever been-- concerns about MS stuff not being enterprise-ready have largely gone away, and the awfulness of Windows 98 and Vista are thankfully behind us.
Cons
Many parts of the company are disconnected from the customer and are too internally focused-- worrying more about what other groups are doing than what customers need. The result of this is frequent re-organizations, randomization, and throwing away work as one executive wins a political battle and changes priorities of the last guy. This is not true in all teams-- many are more stable-- but it's frustrating to see so much time being spent on internal priroities. Many product units produce phenomenally good work. SQL Server, Visual Studio, and ASP.NET are good examples of this, as is Office 2007 and, increasingly, Exchange and even Windows Server. Any of these products, were they standalone companies, would be hugely successful market leaders and would be, I suspect, widely admired and emulated. But the company has struggled to transform individual product success into customer loyalty for Microsoft overall. For many years, the company has been defined-- in the media and in the minds of most customers-- by its failures and excesses: the DOJ/Netscape mess, failures in Search and Mobile, the Vista debacle, etc. Unless the company can figure out a more positive story to tell to the world, it will be increasingly hard to convince people that Microsoft is relevant. Microsoft's traditional business model (selling software licenses) is under serious attack-- MSFT has several more fat years left (signficantly, Windows 7 is sure to be a hit, and SQL Server will continue to take $billions from Oracle) but Open Source and the LAMP platform are slowly but surely commoditizing much of the traditional software business. The presence of Linux, MySQL, etc. won't prevent people from buying software, but they will surely exert continuous downward pressure on license costs, destroying the fat margins of traditional software companies. This will likely hurt Oracle and other higher-priced vendors worse than it hurts Microsoft, but the days of 90% margins on selling software licenses are numbered. So Microsoft has a huge challenge ahead: how to transform itself from selling software to selling subscription services powered by software. Think Salesforce.com. Unless Microsoft can make this shift in the next 5 years, it's doomed. The job market for experts in Microsoft technology really stinks right now, unless you want to work for a one of the large companies who are heavy users of Microsoft's stuff. Smaller companies, especially web-focused ones, especially in the Bay Area, just aren't using Microsoft's servers. As a result, after 10 years at Microsoft as a senior, highly-technical expert I'm facing up to the reality that my next job will almost certainly be at a company running Linux Servers, MySQL databases, Java middle tier apps, and PHP/Rails/JSP/etc. on the web tier. This is a bummer since Microsoft arguable has a better database, a much better web platform and tools, and a comparable OS vs. the open source guys. But I can't fight the job market! :-(