Better link for you: http://www.penny-arcade.com/comic/2009/5/18/
I would concentrate more on language breadth (learn a lot of them).
If you already have a grasp on C languages, try some non-C languages that do things very differently.
Namely, functional and dynamic languages. You've already covered procedural and OO (Java).
Outside of languages, more than likely you haven't learned OO concepts very well yet. Not your fault, colleges are notorious for teaching bad OO practices (I've only been proven wrong on this once). Design Patterns are another good topic to investigate.
The key to Microsoft's fortunes are in the Business Market, not the Consumer Market. Businesses buy Office, Exchange, SharePoint, SQL Server, and Server products. Businesses pay for support agreements and the like. There just isn't as much money for them in the consumer market. So Microsoft doesn't put as much energy there.
Apple loves the consumer market.
Linux loves the business market.
Therefore: Linux is their biggest competitor.