Furthermore, I am very (very) thankful that I did not start my career at Microsoft, but rather at small startups. The primary drawbacks I see for starting at Microsoft are:
* You do not really learn from your mistakes- there are sooo many code reviews, design reviews, test reviews, etc that it's essentially waterfall planning and you have very little chance to experiment and fail. Which I think is critical for starting out. You're surrounded by very experienced people, but at first what you really need to do is to learn on your own (in a production environment).
* There is a certain lack of energy on many teams at Microsoft (not all, but a large majority). You're young, you have nothing to lose, may as well learn what it feels like to work on a small team and crank out features like your company is going to go bankrupt in 3 months.
* At Microsoft, you learn to code. At smaller companies, you learn everything. A bit of customer support, business models, ux design, etc. A small company gives you a great broad base of experience from which you can build on in any direction. Microsoft for the most part, is more of a specialist (one person who just works on installers, one person just working on build system, etc).