Quick background: I used to hate Microsoft and love Linux. Now, and for the last 9+ years, I have made a living almost exclusively as a software developer on the Microsoft development platform.
Every now and then, I check back in with the non-.NET world to see how things are progressing. (I actually have a decent amount of first hand experience with Java and Perl. I don't really have first hand experience with Ruby or Python or many of the other flavors currently getting a lot of press.)
There is still a lot of ignorance, which exists everywhere. There is a lot of Microsoft hate and Sun hate and even some Ruby on Rails hate.
Here's the thing:
If you are given a set of well written business requirements, and you are a competent developer on the relevant platform, you can bang out a relatively easily maintained solution on various technology platforms without much problem.
However, if you are on a team of incompetent people, you will likely fail regardless of the technology platform.
If the business requirements are not written well, you will likely fail regardless of the technology platform.
So, the question in my mind is: how much of an obstacle to project success is the technology platform compared to the people and the requirements? I think the answer is "not much".
So, why is so much time wasted with the angst and religious discussions about technology platforms? I would rather see developers do the following with their time:
1) choose jobs with good people
2) learn to hire good people
3) learn how the business (of your customers) works so you aren't so dependent on requirements written (almost exclusively) by people who don't understand the technology platform being used to implement the solution
In my humble opinion, developers spend way too much time debating things (like technology platforms) that have minimal impact on project success.
I guess it should go without saying, but moving toward project success is pretty high on the list of goals for almost anyone, anywhere. The technology platform of choice has very little impact on project success.
So, how did I choose a technology platform for me personally? I made a bet. I gambled. I guessed that expertise in .NET would translate best into an income stream. In the end, I may be horribly wrong, but so far it's working out okay for me. As long as I/you can feed my/your family, any technology platform of choice is good enough.