Microsoft makes it easy
A friend of mine working in Europe wrote in describing his experiences with IT out there. He points out what many tech-heads, through arrogance, ignorance, or whatever, refuse to get: it's important to make things really really easy. I saw this often at IBM. Although they now pay lip service to making better developer tools, their IDEs are still not as good as Microsoft's and Lotus Notes makes it pretty plain how well they understand Human-Computer Interaction. Maybe J2EE will create better IDEs, Microsoft will certainly continue to improve their's.
I am advising the CEO of a small software company, which is now basically a VB shop (20-30 people), on the transition to J2EE, to .NET, or maybe a little of each. They've decided they want to do some kind of shift to java, and now I'm setting up trainings on technology, best practices, etc..
Here is what I notice:
People know much less out here on the margins. It would shock you. This goes for management as well as techies. Mgmt knows less about proprietary vs. open, microsoft vs. non-microsoft. Techs know less about development methodologies, basic engineering, alternative technologies. At first I was astonished, but now I see that their clients are on the same knowledge level so deals still happen.
But overall this plays to Microsoft's advantage.
Management likes MSoft partly because it projects respectability and talks like a business. The Neal Stephenson 'command line' article that originally talks about M's OS addiction being like Apple's hardware addiction, also talks about M's bourgeois appeal. That observation seems pretty believable from where I stand. But -- ignorance is a fickle patron. Their clients may not know exactly what java is but they think it's trendy so they want to buy some of it and ask for it specifically. Also, they don't like paying licenses and maybe they feel angry at Msft because they're frustrated with computers (like everyone else who uses them).
This may be the smaller factor. Microsoft's advantage with unsophisticated tech may be bigger.
Out here, tech likes microsoft because it's easy. Microsoft has great IDE's and VB development is quick and easy. You're right Msoft makes great apps. That carries over into their development tools, and the integration between their DB's, IDE's, etc., so that you can whip together a lot of stuff on Msoft tech very quickly. This gives them an advantage in small intranet and enterprise apps, even if their servers are dodgy or expensive.
Also, when you add it all up, I'm not convinced it's an open-shut case if microsoft costs you more than, say, linux and java.
In javaworld you don't need to pass microfost licensing costs along to your customers. BUT, maybe development takes longer and costs more per hour, because the tech is harder, and because the tools and overall development environment is not as well integrated. I've also followed close discussions of this on places like www.theserverside.com, and it's not a no-brainer.
(Personally I'd recommend developing in a well-integrated environment like Websphere + WSAD, then deploying ontro free platforms like Tomcat/Apache. Sort of a half-half solution.)
Lots of these hacky VB apps stumble and certainly don't scale, but most software fails so it's hard to pin it on the fact that it's sloppy rushed VB work.
I don't know what the distribution curve of global IT sophistication looks like. But I wouldn't be surprised if the least sophisticated make up most of the people, and my context which was at first very surprising to me is in fact close to the norm.
Perhaps the transition to .NET may disrupt some of this, since it's fully OO and hard and slow like java, at least relative to vb6. Too soon to tell. I suspect Msoft excellent IDE's and platform integration will still make it easier to develop for.