A couple of days now I stumble across blogs which are written by VB.NET developers who feel offended by some remark of some MS employee I will not mention here or feel offended because someone criticizes VB.NET. I feel sorry for those VB.NET developers who feel offended: they do not understand that it isn't something personal, it's just criticism on a language and, sorry, every soul has the right to have that criticism. Sometimes it's criticism on the developers using VB.NET and then again, sorry, this is sometimes true, albeit it is based on generalization which is something that should be noted as well.
I've written VB5/6 COM components for IIS applications for years, but was really relieved when I could make the transition to C#. I really don't like VB or VB.NET, because of the various silly constructs that are in the language, like the most stupid construct ever created by man: "_". That's a personal opinion and perhaps not even a rational one. However saying that you find VB or VB.NET a really bad language makes some people get upset and make them start writing blogs about how wrong you are, not to mention the hate-mail you will receive or the "You are wrong!" kind of replies in blog comments.
These people don't get it. Using a language is not a way of life. It's simply that: using a language. When someone has a different opinion about the language you use than you have, it's just that: a different opinion. When you get personally offended by reading someone's opinion about a given language, you should take a step back, look in the nearest mirror and say out loud from the top of your lungs: "It's just software, for crying out loud!". Do you think I get offended when someone slams C#, the language I use every day? I'm more than happy to join the person at times. The reason for this is that criticism founded on rationality (a.k.a. constructive criticism) is good, it will make the subject of the criticism better in the long run. Criticism based on non-rational claims are not constructive and are just 'opinions' and can be ignored. "Java top designer slams C#"... gee... how surprising. I really feel offended now... 10, 9, 8.... . But perhaps he has something valuable to say which is true. If that's the case, embrace that criticism and follow it, support it and perhaps MS will take note of it and change something.
It seems however that having criticism about VB.NET is not welcomed to say the least, because of the set of people who get/feel offended by the criticism and ventilate that in every occasion they can find, like uber-zealous [insert random technology here]-advocates. To those I'd like to say: stop it. Look for the reasoning behind the criticism and when you find something based on rationality, embrace it, support it and also try to criticize your own language of choice so it will make it better in the long run. When someone slams the language you use, don't slam that person because you feel personally offended, try to find out if the reasons for the criticism are rational enough to follow them. After all, it's just software, a tool, not a way of life.
This is also true when you want to make clear that in some situations C# is better than VB.NET. These kinds of remarks get very fast out of hand, people start shouting "Don't start a language war!". Why would a couple of remarks about why language X sucks because of A, B and C and language Y doesn't result in a language war? Because of the people who feel personally offended by the criticism on their language X. Until these people grow up and get a life, the language X will not get better and questions about why their language X sucks because of A, B and C will not be answered. That's a shame, because it is so easy to debate pro's and con's about a given language so that given language will get better and better.
Not all blame is with the 'offended people' though. Microsoft itself helps prejudices about the IQ and skill set of the average VB.NET developer keep on living: refactoring is refactoring. It's called that way in the IT business, it's a general term. Therefore, don't re-name that. partial types is a term that is general within .NET. Do not change that in VB.NET. It will alienate these people from general discussions. Also remove silly constructs from VB.NET like the "_" character to concatenate keywords that form a single statement (the compiler doesn't need that character, it can perfectly find out where the statement ends) and On Error * and make it a language which doesn't drive people away from.