views:

635

answers:

5

I'm not interested in starting another "who has the bigger member" VB vs C# debate (http://stackoverflow.com/questions/158229/what-are-the-pros-of-vb-net seems to cover that already) though I am interested in indirect differences which may influence developing in one vs the other. All my commercial .NET development was desktop apps in VB until the last 3 months where I had a web project and decided it was a good opportunity to force myself to learn C#. In the course of doing so I've noticed a few non-technical differences:

  • A lot more mature open source apps and thorough examples are available in C# than for VB.

  • Third party vendors of add-ins for things like refactoring and documentation tend to support C# better than VB (if at all), with VB support for similar features from comparable C# versions often lagging behind or absent.

  • ASP.NET jobs targeting C# seem to pay around 15-20% more on average than otherwise identical jobs in VB (at least in Australia, looking on seek.com.au and careerone.com.au for reference).

The jump to ASP.NET, MVC and C# presented a lot of speed humps at once but I think was well worth it. The decision I need to make now is whether to put more energy into pursuing C# for future .NET development or if I might as well stick to VB. Are there any other points of difference between the language (other than direct language feature comparisons already covered) that one should consider in this instance?

+1  A: 

I agree with your points, particularly the first. I would add that it seems there are more C# developers out there than VB.NET. If you are looking to hire another developer, you may get more (quantity or quality) from the C# pool. And employers, perceiving that C# is more popular, will go in that direction, and there will be more demand for C# programmers (hence the higher salaries/rates you noticed)

MikeW
Lisa Feigenbaum, a Microsoft PM in the .NET Managed Languages Group, said (in June 2009) there are slightly more VB.NET developers than C#. http://www.infoq.com/news/2009/06/Future-VB.NET
MarkJ
It may be a perception. I just checked jobs in New Zealand and got 16 hits for vb.net, and 102 for C#. That's open positions obviously, not developers. Maybe there *are* more VB.NET developers, meaning C# developers are more scarce and therefore more in demand?
MikeW
I think the statement should be: there are more people who can/do use VB.NET, but more C# developers who are PROFESSIONALLY EMPLOYED. In thinking of it like that, I guess I can see a motivation for not accepting VB.NET applicants.
FerretallicA
+3  A: 

I find that VS does more automatic code completion for VB than C#.

It's very useful to know both languages and I personally have to get better acquainted with C# so that I'm comfortable applying for C# jobs which should triple my options.

AUSteve
Good point. One of the most frustrating things about moving to C# is the number of things VB picks up while you're coding which C# doesn't, resulting in a "code-compile-finderror-fix-repeat" cycle.
FerretallicA
Using a tool like ReSharper can provide a lot of as-you're-typing assistance while learning C#.
Lance McNearney
After many fruitless attempts at integrating programs like CodeRush into my workflow, ReSharper has finally won me over. Nice recommendation.
FerretallicA
I like the back ground compilation feature of VB. Something which was lacking in C#. VS 2008 sp1 introduced it for C#. But still lacks when compared with back ground compilation feature of VB
Yogendra
+2  A: 

One thing that has been widely stated when I have participated in hiring (both as a hiring manager, as well as a candidate) is that C# and Java are close enough that converting a candidate from one to the other is fairly easy, and that this is not true for a VB.NET candidate to C#, or Java. This statement has even been extended to C++, saying training a C# or Java developer (to code in C++) is easier than a VB.NET developer.

Though I tend to disagree (I think it is more about how the person sees programming in general) I know that several large, reputable firms will accept candidates for C# or Java jobs that list C++, C# or Java experience. These same firms will in general not look at candidates who only list VB.NET, or list VB.NET as their primary language.

GrayWizardx
Can you list those firms, so we can avoid them? Sounds like their reputations are undeserved.
MarkJ
That's actually a pretty good point for two reasons...1) When dealing with direct hiring not nearly so much as when dealing with recruitment agencies. All bar one recruitment agency I've dealt with for technical jobs had little idea what they were even asking in their own buzzword-laden advertisements. If they are told to look for "C#" and someone's resume says "C++" or even "C:)" I would imagine they'll bite.2) The pool of available learning materials is a lot greater if you are willing to put in the effort to adapt C/C++/Java examples/tutorials/etc.Accepted!
FerretallicA
Its one reason why I encourage people to list their languages in one section (C, C++, Java, VB.NET) without years of experience and list their Experience in another section (projects, etc). Many firms use HR to process resumes before recruiters get them and the "filter" is looking for specific stuff (i.e. must have C experience, etc). A recruiter may know the experience is transferrable but the filterring person (HR, outsource firm, etc) may not.
GrayWizardx
+3  A: 
  • At the Microsoft 2009 Mix Web developer conference, all the presentations that I attended included code examples in C#, not VB.

  • In StackOverflow, notice how questions tagged c# largely outnumber vb.net and vb.

  • John Skeet wrote C# in Depth, not VB in Depth.

James Lawruk
+1 It's a consideration, although Microsoft have claimed (again) that VB.Net will be given equal status with C# in future
MarkJ
VB in Depth would be about twice as big. VB, from a syntax and compiler standpoint, is a far more sophisticated language.
Jonathan Allen
A: 

Specifically for web development, becoming proficient in C# made writing javascript (and doing complex things using jQuery) much easier because the syntax is so similar.

Lance McNearney
Aside from == and the use of braces, C# and JavaScript are nothing alike.
Jonathan Allen
I didn't say they were the same or even close... Just that the syntax is similar. For example braces, semi-colons, operator logic, if statements, switch cases, etc. It's much easier to switch back and forth between JS/C# vs JS/VB.
Lance McNearney
Saying C# and JS are nothing alike is being ignorant, pedantic or both. I think it's a perfectly valid answer.
FerretallicA