It can be difficult to talk to groups that are hostile about Microsoft technology because their beliefs are often based on sweeping generalizations or bigoted opinions. Although Microsoft isn't perfect and doesn't always get things right it is surprisingly good at improving its products over releases and for engaging with the community to get feedback.
John Bristowe writes about his experiences attending a Linux User Group and talking to people about Microsoft and Windows:
What's funny is when you approach these people to challenge their stereotypes about Windows, they incite some form of moral/religion conviction against Microsoft and/or refuse to discuss the issue any further. I try to tell them, "Look, I'm all for a good debate. Let's discuss this." Nope. Nothing.
I had a similar experience to this on Tuesday night at the Extreme Tuesday Club. I walked into a discussion about C# and .NET that went roughly like this
Attendee: "Microsoft standardised C# purely as a marketing move because Java isn't administered by a standards body. Besides, the group that administers the standard is the easiest to manipulate standards body out there."
Me: "So you're saying that even though it's administered by an international standards body you think it may not be a '100% pure' standards body and for that reason you don't see any value in it?"
Attendee: "Well, Microsoft has never been interested in open standards!"
Me: "Well what about Microsoft's work in the WS-* space. For WSE they have shifted from a pre-OASIS version of WS-Security to the OASIS version of WS-Security to ensure industry support. They are also holding open workshops with any vendor who wants to attend to make sure that the standards are workable. How does that work in the context of not being interested in open standards."
Attendee: "Hrmph. I don't know anything about that."
As John mentions, there's a kind of snigger that goes through a group when they criticise .NET.
Fortunately I managed to have deeper conversations where I found out more about pain points that were creating a negative perception of .NET amongst a corporate group that was switching from Java to .NET. I agree that some of these things are problems with the existing .NET technologies, but found it interesting that they were seen as such major issue. What impresses me though is that some are being fixed or improved in Whidbey and that there are many Microsoft employees comment or discussing them in public.
- No refactoring in the current version of Visual Studio. This is difficult for developers used to a Test Driven approach to coding and the awesome support provided in Java IDEs such as IntelliJ or Eclipse. One guy said that the lack of this feature meant that ".NET code was unbelievably brittle: it was easy to write the code initially but very difficult to change it later". Refactoring has been added to the Whidbey version of Visual Studio. has an excellent blog where he talks about his work implementing refactoring support for Visual Studio.
- The inability to set different access levels on property set and get statements. This has been fixed in the Whidbey version of C#.
- Some interesting C# enum behaviour that Chris Stevenson mentions (here and here). These were mentioned to me as evidence that ".NET is fundamentally flawed" even though the person I was speaking to didn't actually know the issues in detail. I admit I didn't either, but I was impressed to see that Eric Gunnerson had replied to both of Chris' posts.
I'm not trying to say that .NET is perfect or that Microsoft always gets things right, just that discussions are more interesting when they are based on detailed information rather than sweeping generalisations. I'm glad that the Java IDEs are currently better at supporting refactoring than Visual Studio. I love the competition and the increasing number of good ideas that it creates. I also like that Microsoft, eventually, take notice and improves its products.