I used to work in a C# .NET shop. It was a new technology I came from a C++ education and I had the possibility to receive free training and a job.
After that experience I started to work for another company, similar technology but our CTO had a Java background so the system architecture was more JEE like than .NET; we had a MVC framework developed by him and we had an almost completely stateless server side. He made me appreciate the power behind open source technologies, unix like systems and many other interesting aspect of the enterprise apps world.
I have always considered the programmer’s job an art that was not strictly related with programming languages, specific technologies or even computers. The problems solving / abstract / creative aspect is what I consider the core part of my job.
What I have noticed in most of the developers using Microsoft technologies is the lack of understanding of basic object-oriented and computer science notions. They are just people that after university bought a microsoft book, installed Visual Studio and learned to use a tool! They also tend to be Microsoft fanboy and they are completely second-level ignorant about every other alternative to their little packed solutions.
The Java world is full of other problems although I found the its vibrant community is open-minded and very close to the Agile trend.
I am quite happy now. I am no more slave of Microsoft products and I am part of community of people that love trying new things (languages, technology, methodologies) and they have a better understanding of software development and computer science.