VB vs. C# @ Microsoft

I've been a programmer for 5 years now, and here is a list of technologies I've used in my on-the-job capacity:

  • OOP: C, C++, C#, VB .NET
  • Pseudo-OOP languages: VBA, VB5, VB6
  • Web Technologies: ASP, ASP .NET
  • Client-side scripting: javascript, vb script
  • Client-side rendering: HTML, DHTML, css
  • Databases: SQL Server, Access
  • Reporting tools: SQL Server Reporting Services, ActiveReports
  • Installers: Wise, InstallShield
  • XML

Additionally, I've build custom server controls for ASP .NET, developed and deployed software for Pocket PC 2003, used SQL Server Merge Replication. Furthermore, I've been responsible for defining, implementing, and maintaining software development processes such as source-control.

I mention all of this because I want to make it clear that I have experience with a wide range of technologies and my preferences are based on experience and taste rather than lack of experience.

I prefer VB .NET to C#.  I know that at root they're basically the same--that most of the differences are merely stylistic. I just like the slightly more verbose aspect of VB.

I've noticed however, that Microsoft, in their job postings, mention "x years of experience in C#" but not VB .NET.  Is this deliberate? At Microsoft, are the C# and VB .NET experience substitutable? Are VB .NET developers not wanted as Microsoft? I don't mind coding in C# if that's the issue--what I'm getting at is this: does MS have a preference for C# over VB .NET in terms of the background experience that they're looking for in potential employees?  If so, why?

One of my dreams is to work for MS in Redmond. Am I painting myself out of that dream because I code mainly in VB .NET?

Comments

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 11:19 AM by Alan Yeung

Almost all the developments in Redmond are based on C#/C++... VB sounds like a toy language there..

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 11:19 AM by Alan Yeung

Almost all the developments in Redmond are based on C#/C++... VB sounds like a toy language there..

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 11:22 AM by denny

Very Good question....

IMHO there is one issue that it the real "Kikker"

does the guy have a background where he "Knows" about low level stuff?

most C / C++ folks have done at least some assembly lang. work and have had to deal with stuff like raw pointers and memory mapping ( transform a data structure to an in-memory layout) and other related stuff.

if you have that you can take any language to the "Edge" but if all you have done was Word and Access and VB 1-6 then you may not "Get" some of the really deep stuff....

also a *LOT* (IMHO) of VB coders would not have a clue how to write some of the classic stuff
like
Linked List
Tree
QSort
Shell Sort
Qeues (spelling! I know thats wrong)
or other stuff like that...

*NOT* to say many VB'ers do not know this....
just that a lot do not and that may be part of the
differece in the "culture" of C Vs VB that sometimes tends to ask for a C'ish person.

BTW: I too have done many kinds of coding....
I like VB but like you I can do whatever it takes to make it work... :-)

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 11:45 AM by Dave

I'm not trying to start a flame war here. Visual Basic is not taken seriously by anyone than other Visual Basic Programmers. I think its a great language and the criticism is unjust but thats the way it is.

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 12:09 PM by Chris McKenzie

Denny has a couple of items on his "low level" list that I have not covered yet--the QSort and Shell Sort. I've done binary and bubble sorts (bubble sort only as a programming exercise!). I'd have to look up Shell- and Q- sort. Linked-lists, Trees--been there, done that, bought the T-shirt.

I haven't done any Assembler though. I haven't needed to yet. I'm not against coding in C#, I just don't see why a syntactic preference should affect whether or not I'm considered for a position.

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 12:18 PM by Nathan Maffeo

My solution was to learn c#. I got a book and breezed through it in about a week. I can see why people like c# better, it does some things that vb.net can't and has a cleaner structure to it.

Bottom line is, if you are a reasonably good programmer in vb.net or c# there is no reason you can't learn the other very,very quickly - assuming you truly know OOP and the CLR and FCL.

I decided that even though I knew the bias against vb.net was unfair, simply knowing that fact doesn't help me - it was either change everyone's opinion or add another tool to my skillset. Guess which one was easier.

p.s. My favorite lang is still vb.net and i'm lucky enough to have an employer who shares that view.

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 12:22 PM by Chris McKenzie

Thanks for your comments Nathan--I'm in agreement with you. I *have* learned C#--it's just that on my resume I can show about a year of C# experience relative to 3 years VB .NET experience. But still, you're right.

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 12:29 PM by lynn

I think it's more a function of audience. VB.net is more focused at the non-professional, non-enterprise programmer where as VC# is, especially in the 2005 versions.

However, in .Net programing learning the framework in more important than a particular language. Once you get enough of the concepts down, moving between the two is not difficult. I started in VB.net and I'm moving to C# for the VS2005 time frame. I might limit C# to class librarys though. VB seems to be very friendly towards UI creation.

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 12:50 PM by .

They probably have to pick one or the other. You can't have a team of people working together on something where some know only C# and others only know VB.NET (even though there are tools to translate one language to the other). It's a shame, because in many cases people would be a lot more productive using VB or some other easy language. I really can't think of one reason where you would *need* to code in C# instead of something easier to use. Why does DirectX only have C# sample code for example? Just because C# looks more like C++ than VB, doesn't mean it is the "fastest" or most powerful option.

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 12:54 PM by Chris McKenzie

I don't think that argument flies either--the .NET framework makes for an extremely small overhead to move between languages--especially if the person has C or C++ under belt. I get the bit about picking one over the other--but when hiring perspective employees, I don't think that OOP VB .NET'ers like myself should be dismissed because we only "have a year in C#."

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 1:04 PM by Jeffrey Palermo

Doesn't anyone use J#? I use J# sometimes for a quick test harness. I prefer ; and {}s, so I mainly do c#, but people who really understand the .Net framework know that language doesn't matter as long as you make your code CLS compliant. If I was a great VB.Net developer, I wouldn't have a problem finding a job, and if I WAS interviewing, and the interviewer was biased like that because of his little situation I like to call "being a complete moron", I wouldn't want to work for that company. It would be a frustrating work environment of decisions handed down that are based on zero knowledge of the domain.

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 1:09 PM by Jeffrey Palermo

Oh, it's also capitalism. What if you programmed in COBOL.Net and could write any OO app better than any c# programmer. You could be an independent contractor, but if the market is there for apps with the name "COBOL" in them, then you have a problem. The market may shift for weird reasons or no reason at all. What about later when c omega comes out?

I think with .Net, I don't call my self a c# or vb.net developer. I develop apps with the .Net Framework to be run on windows. I can use several languages. Then when a project comes, I select the language or languages to use at that time. That may actually make someone more marketable if they refrain from labeling themselves either way. What about all the VB shops that don't want to hire a developer if he has mostly c# experience on his resume.

# re: VB vs. C# @ Microsoft

Wednesday, February 02, 2005 2:04 PM by Pedro Silva

I think it's mainly because Microsoft comes from a C++ background, and these teams feel more comfortable moving to C# (I know, the product I'm working on in written almost entirely in C#) because the language constructs are similar. But, there are definitely teams at Microsoft that use VB for development.

As for using multiple languages, even though that's supported in .NET, it's hard to have multiple languages within an application. The learnabilty and maintainability of the application goes down if you have to go between two lanugages.

# re: VB vs. C# @ Microsoft

Tuesday, July 10, 2007 5:26 PM by Alias Frenkie .Net 2.0 MCTS Windows Developer(vb.net 2005)

Hey C# guys i wanted to tell you that the vb.net and c#.net are not comparable.

The reason is that c# is only static language.

This means that you must declare all of your types at design time. You can not get on the other side of the compiler. This is called Early Binding. But visual basic.net supports both Early and Late binding. For the end user - the customer this means that vb.net applications are more flexibile, more professional and more fast then a c# app's.

For the vb.net programmers this means less code and more but also more knoledge to do it.

In vb.net you can do both things. So to say that you are a professional vb.net programmer you must be able to make your application work in both sides of the compiler.

In vb.net you can play with your application at runtime in the same way you do it at design time. So to say that you are a vb.net pro you must have perfect skills to work with the code and also with the vb compiler at the same time.

This is one big reason why peoples choose c# becose it's easier then vb but c# and c++ and j# are static languages.

VB is static and dynamic at the same time. You can make vb only static by setting Option Strict off butt you probably wont do that becose you dont want to lose the power that gives you vb.net as the only dynamic languge.

I just wanted to notice to you that vb.net is better but requires more knoledge and skills in order to deal with the runtime as you do it only in design time with the other languages.

You can read some articles on the web about this.

Sincerely

~Frenkie~ MCTS Win Dev (Visual Basic 2005)

# re: VB vs. C# @ Microsoft

Saturday, July 14, 2007 10:08 AM by Sam

Yes, Vb.net apps are "more fast".

Enough said about the quality of VB.Net developers lol

# re: VB vs. C# @ Microsoft

Friday, July 20, 2007 3:45 PM by SCG

From the blog: "OOP: C, C++, C#, VB .NET"

BTW, C is not an OOP langauge

-------------------------------------------------

In reply to Jeffrey Palermo:

"What if you programmed in COBOL.Net and could write any OO app better than any c# programmer."

This would be a very impresive feat since Cobol is not an OO language!

-------------------------------------------------

In reply to Pedro Silva:

"But, there are definitely teams at Microsoft that use VB for development."

If you can point me to one single Microsoft product that is written in VB I will be astounded.

-------------------------------------------------

In reply to Frenkie .Net 2.0 MCTS Windows Developer(vb.net 2005):

"vb.net applications are more flexibile, more professional and more fast then a c# app's."

Actually dynamically bound code is slower than statically bound code.

"this means less code and more"

Did you read this after typing it?

"This is one big reason why peoples choose c# becose it's easier then vb but c# and c++ and j# are static languages."

Do you not realise that Visual Basic is a form of BASIC or Beginners All-purpose Symbolic Instruction Code? Its a language designed for people who have little programming experieance to learn programming techniques.

# re: VB vs. C# @ Microsoft

Friday, July 27, 2007 4:09 AM by Thirddaysaved

Ok... so BASIC was made for beginners...  Do you understand that VB.Net is a huge expansion from the original BASIC written by Bill Gates?  C++, and C# are all huge expansions that started there as well.  I'm guessing that you honestly almost never use VB, and most likely don't understand how close they actually are... Not statistically speaking, but just progmatically.  VB is now extremly close to the way programming is done in the more prestegious languages such as C#, and C++.  They can all get the same projects done, but in different ways.  There are differences, such as pointers, and Header Files, but if you like one better than another, thats up to you.  There are still languages avaliable that do what BASIC did, and they are the languages for beinners.  At the same time, I will admit that in this world, VB is less respected than C, and C++... but that is because it used to have a lot less functionality. The new 2005 versions are incredible, and are all almost even in my eyes.  I use VB for most of my projects, but I've used C++ too, and its not that much more complicated at all, but I can tell you that it's tedious.  Why would someone choose a slow tedious language to develop on, over a fast one only at the cost of a very trivial amount of performance that basically all machines today would have no trouble dealing with.  One reason I can see for it, is for extreme gaming, or some other type of full CPU performance program.  Another may be to gain acknolegment with people who find C, and C++ better. But thats about it... So, I believe that you will find that they are very simmilar, but with small differences.  But... SCG... please dont think that the Visual Basic today is within the same skill level of the original... It can be, but it can also expand to do what top level languages do.

# re: VB vs. C# @ Microsoft

Friday, July 27, 2007 4:29 AM by Thirddaysaved

Hey, I also wanted to say that it still is a good idea to switch to C++, or C#... mainly because they are simply more respected languages.  I don't fully understand why, but they are.  If you don't like them, then swith back... I don't want to fully switch either, but I know that thats what I should do, so I'll pray, and hope for the best!  I on't see how i could hurt... at most I'll just become a better programmer! (O... and in my last post I wasnt really talking to you Chris, I was talking to SCG... sry, jus didnt want u to think i was yelling at you)

# re: VB vs. C# @ Microsoft

Friday, July 27, 2007 2:42 PM by SCG

“Do you understand that VB.Net is a huge expansion from the original BASIC written by Bill Gates?”

BASIC was not originally written by Bill Gates. According to wikipedia: Basic was “designed in 1963, by John George Kemeny and Thomas Eugene Kurtz at Dartmouth College.

“I'm guessing that you honestly almost never use VB, and most likely don't understand how close they actually are...”

I have a good amount of experience in VB2005 and I despise it. I cannot see how any reasonable programmer can be more productive in VB than in more or less any other language. Its got a good IDE but the language will always matter more than the IDE.

Here are a few of the things I hate about VB:

1.

   Sub Main()

       Console.WriteLine(DoSomething(Nothing))

   End Sub

   Function DoSomething(ByRef x As Integer) As Integer

       Return x

   End Function

Can you guess what this writes to the console? Unbelievably it is 0! This should throw an exception! Actually it probably should not even compile!

2.

   Sub Main()

       Console.WriteLine(DoSomething("This compiles!!!"))

   End Sub

   Function DoSomething(ByVal x As Integer) As Integer

       Return x

   End Function

The above code actually compiles!

3. Dumbed down syntax: Me.X instead of this.X. Could the “me” keyword possibly be anymore condescending to the people who have to use it? Also “Friend” instead of “internal” and unbelievably; “MyBase” instead of “base” or “super.” Other nasties include “MustInherit” and “MustOverride.”

Also not using standard terminology such as “Shared” instead of “static” and

4. The ridiculously verbose syntax:

Public Class Test

   Inherits TestBase

   Public Overloads Overrides Function ToString() As String

       Return ""

   End Function

   Public Overloads Overrides Function ToString(ByVal arg As String) As String

' Yes this actually compiles without an error! It does give a warning though

   End Function

End Class

Public MustInherit Class TestBase

   Public MustOverride Overloads Function ToString() As String

   Public MustOverride Overloads Function ToString(ByVal arg As String) As String

End Class

5. Allowing functions without a declared return type

“Hey, I also wanted to say that it still is a good idea to switch to C++, or C#... mainly because they are simply more respected languages.  I don't fully understand why, but they are.”

Many of the above complaints are about features that are supposed to make VB easier to use to novice programmers. This is why VB will never be taken seriously by expert coders.

# re: VB vs. C# @ Microsoft

Thursday, June 12, 2008 8:35 AM by Tamer

I just love VB for it's IDE, plain understandable syntax,

I don't know why C# should be case sensitive?

also, the VS2005 IDE for C# sucks, code completion of C# is very bad.

 have you ever was changing some code in C# then got lost by the lots of braces, and kept moving between the braces to find the missing one? This is a wast of time.

in VB.NET any one can understand a peice of code does, it's in plain english :)

Leave a Comment

(required) 
(required) 
(optional)
(required)