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.
If you’re a new programmer, there’s no reason to start out with VB.NET. Not only are there a lot more jobs available in C#, the syntax of C# is more useful to know because it will make it easier to decipher code in syntactically similar languages such as C++, Java, and JavaScript.
Seriously, how many VB.NET can't switch to C# (or vice versa) with a small cheat sheet? Only clueless HR recruiters think that VB.NET people can't write C# (or vice versa).
So, as a developer, you should care more about the future of the .NET platform as a whole than comparing C# and VB.NET.
As you know, the biggest competitor of .NET (or C#) is still Java.
Posted by: aa | July 13, 2008 at 06:21 PM
I agree with the comment above that it's not that difficult to move between C# and VB.NET. Knowing the .NET Framework is 90% of the difficulty of .NET programming.
But the fact is that C# looks more impressive on a resume. And the fact is that companies developing in VB.NET will have a more difficult time hiring the best programmers. VB.NET is a language best avoided.
The future of .NET looks pretty good, it's catching up to Java. Soon there will be more .NET jobs than Java jobs.
Posted by: Big Mike | July 13, 2008 at 08:05 PM
In my corporation, the C# programmers are much competent in OO programming & modeling. That is why we had ceased the contract with the VB.NET programmers.
Posted by: Gunao Sepire | August 13, 2008 at 11:16 PM
Agreed.. C# is truely a OO based language. Most VB programmers come from a more procedural place where spahgetti code abounds.
Thanks for the post
Posted by: Carol | October 10, 2008 at 03:43 PM
Hi Mike,
I'm emailing you in regards to a followup email I sent you a month ago in response to a partnership, have you had a chance to think about it?
If you have any questions or would more information, please advise me and we can go from there.
Kind Regards,
Andrew Knight
Posted by: Andrew Knight | November 04, 2008 at 11:11 PM
I told my friends nephew the exact same thing. He wanted to learn vb.net over C#. I insisted that he learn C# instead. His VB.net friends have been laid off in droves. He still is sittign comfortably at a very large corporation. Glad he followed my advice and yours.
Posted by: Investing Blog | March 30, 2009 at 04:34 PM