When Visual Studio.NET first came out, I immediately predicted that C# would surpass VB.NET as the preferred .NET language. Unlike many of my predictions which didn’t pan out (the first time I saw the internet, I said “no one will ever be interested in this besides hardcore nerds”), I was dead-on with my C# prediction. And it was a pretty bold prediction at the time, because most people moving to .NET were Visual Basic 6.0 programmers, so it seemed natural, to some, that VB.NET would be the default .NET language.
But there were two major factors that caused me to predict the eventual triumph of C#:
(1) VB never had the respect of people who considered themselves to be “real” programmers. It was unlikely that this would change just because Microsoft added a .NET suffix. C#, on the other hand, very closely mirrored Java, and was named after C++ another very “real” language, so it started life with immediate credibility.
(2) As I first explored VB, I was disappointed to discover that Microsoft, instead of making a clean break, left in a whole lot of bad legacy VB stuff so code would be backwards compatible. Furthermore there were really weird and arbitrary distinctions made between VB.NET and standard terminology in other object oriented languages. For example, VB never had abstract classes before, so when creating a new keyword to indicate an abstract class, why not call it “Abstract”? But no, that was too obvious. They had to call it “MustInherit.” It was clear that the people concerned with “reality” would look down upon the new VB.NET just as they did with the old Visual Basic.
Let’s fast forward to the present day. I just did a search on Monster.com for jobs in the New York City area, and discovered that a search for “C#” produced more than four times as many results as a search for “VB.NET.” (C#, unfortunately, is still lagging behind Java, as there were nearly twice as many results for “Java.”) It’s pretty clear that the future for VB.NET programmers is unemployability unless they can successfully reposition themselves as C# programmers.
The differential between C# and VB.NET will probably continue to grow. I doubt that there are many brand new companies or projects starting out in VB.NET. There is the perception, true or not, that C# programmers are of higher quality than VB.NET programmers, so companies will choose to do their new projects in C# in order to have access to higher quality programmers. Most of the VB.NET work is for companies who originally had VB 6.0 and stupidly bought into the idea that VB.NET was the natural next step.