Let's talk about money first.
Today, Microsoft's most expensive developer tools package is called "Microsoft Visual Studio Ultimate Edition" and it costs $11,899. Regular developers who just want a compiler with a profiler can buy a version for $5,469. If you don't pay that much, you can't profile your code to see what's fast and what's slow.
And of course, there are many alternatives with fewer features: there are 1126 versions of Visual Studio to pick from.
Apple's most expensive developer tool is called XCode, and it is free. You can pay $99 for a subscription that allows you to publish stuff that people can download through the app store (and you also get early releases of Apple's OSes.)
Microsoft says very clearly that you should develop for their platforms if you have to, and not because you want to. It seems that they intend to make a ton of profit on these tools, rather than making a ton of profit on their operating system, Windows. And amazingly, revenues for Windows are down 4% this quarter.
To be fair, they have free "Express" versions of their software, which don't allow you to edit user interfaces, or use third-party plugins, like source control. I don't understand how these versions are supposed to encourage people to develop for Windows. For instance, many native apps written for Windows have some tie to MFC, but the Express versions don't support MFC.
Microsoft's developer tools come with all sorts of SQL databases and "team foundation servers" and enterprise-sounding integration, and there's a "servers" pane when you open their IDE that only connects to Microsoft servers.
But: if you want to write a game or deal with video or read an image, you have to separately download a huge DirectX SDK, and then a lot of your old code won't compile. For instance, with some code I made to read images from a webcam for f.lux, upgrading to the new versions has missing header files and no suggestion of what the replacement might be.
Microsoft has a very fragmented installed base (with XP at 40% of users), so certain features are only available on Windows Vista or Windows 7, and they do not make it easy to say, "I really want this app to run on Windows XP." Using Apple's tools, you say, "I want to support this level of OS" and the tools do the rest.
Microsoft's developer samples are mostly very old, and the basic story is that they spent all their effort on .NET/ASP/C#, to the exclusion of providing equal access to the OS from native code, or compatibility layers to make stuff run the same way on XP and later versions of Windows.
So if you do care about the 40% of users who haven't upgraded away from XP, you are in this strange game of chicken with Microsoft. You want tools that build one thing that runs everywhere, and Microsoft are obstinately waiting 10 more years for everyone to be running some Windows-Vista-derived OS with only managed binaries on their PC. You'd love to compile on 64-bit Windows 7 and 32-bit Windows XP at the same time, but you really don't get to.
Apple's XCode comes with subversion and git integration, and it builds "universal binaries" that package up multiple builds for multiple OSes. Apple's OS X has a nice shell with an SSH client, so you can manage your server that runs Linux. You can build binaries for multiple versions of OS X by pushing one button, and the code samples are up to date, and they all compile.
Windows 7 shipped "Powershell" which takes 15 seconds to launch and nobody understands.
Microsoft seems to say to developers: if you're not developing for Enterprise, we simply do not care. Our developer tools business unit can be profitable if we sell licenses for $11,000, but not if we give them away for free. And presumably, in some weird twist of Microsoft politics, the snake eats its own tail: maximize developer profits and your platform stops having any new apps in just five years.
It's confusing, right?
In Microsoft's "ecosystem", seriously talented hobbyist developers are not welcome. Not doors-open welcome, maybe junior-high-school welcome. Seriously, they turned off the dialog editor in their free tools.
So this part is obvious: all the people who are using Apple's free tools or Google's free tools or Linux's free tools to make cool stuff can ship it to consumers, while Microsoft's developers are a different breed, the stuck, the legacy...working for big companies who have to do it this way.
The big story isn't even about the iPad. It's why nobody else can get good developers on their version of the iPad, or the phone. And it's because Apple already had developers using their tools, years before they made an iPhone. And they made it easy for new ones to come on board. They made it free, they made it compatible, and they made their sample code compile.
Today, companies are developing for so many platforms at a time. When you use a tool only 20% of the time, for one of your platforms, for some of your users, it doesn't make sense to pay a premium for it. That $11,000 tool you use 20% of the time is like a $55,000 tool you use 100% of the time.
It seems that in the new world of free software, and Apple and Google, developers are sometimes kids from countries where people don't make much money. Certainly not enough to afford Microsoft's tools.
I don't think that the conclusion is hard: Microsoft needs to give up their little bit of revenue they make from exploiting IT budgets for the "developer tools" line item, and price, package, and explain their software so it makes sense to people who haven't already been doing it for ten years.
Consumers, consumers. consumers?