We are currently hiring at the company where I work, and here the codebase is in VB.Net.

We are worried that we miss out on a lot of brilliant programmers, who would never ever consider working with VB.Net.

My own background is Java and C#, and I was somewhat sceptical as to whether it would work out with VB, as - to be honest - i didn't care much for VB.

After a month or so, I was completely fluent in VB, and a few months later i discovered to my surprise, that I actually like VB. I still code my free time projects in C# and Boo though.

So my question is firstly, how important is language for you, when you choose a new programming job?

Lets say if its a great company, salary is good, and generally an attractive work-place. Would you say no to the perfect job, if the language wasn't your preferred dialect? VB or C# is one thing, but how about Java or C# etc.

Secondly if the best developers won't join your company because of your language or platform, would you consider changing, to get the right people?

(This is not a language bashing thread, so please no religious language wars)

NB: This is Community Wiki


IMO, VB.NET is absolutely unnecessary and was simply added to the .NET platform to appease the throngs of VB6 developers who probably shouldn't be writing professional software anyway. Having said that, I believe Language is important, I would never take a job where I had to develop in say VB6 or C. But I wouldn't rule out a position that required VB.NET, because it's still .NET, which I love.

Randy Minder
Why rule out C? Surely C is good for programming with the WinAPI? Of course it can be done in other languages but C is the best way to do it no?
Jamie Keeling
Jamie, C is definitely not the best way to develop Windows applications in 2010.
Robert S.
@Jamie: no. C is the lingua franca for defining the interface, but any other language that can use C header files (e.g. C++) is generally better than C for calling into the API. And there's a cost-benefit to look at with other languages which are more productive for new code but require redeclaration of the API prototypes.
Ben Voigt
Thanks for clearing that up, i'm primarily a C# programmer and still at University so i've not really needed to use C that much. Also I meant in terms of creating an API and not explicitly creating applications, apologies for not being clearer.
Jamie Keeling
@Randy: I'm not sure which language can lay claim to being the original .Net language, but I would argue that C# might have been added to the .Net platform to appease the throngs of us who think VB isn't a real programming language (and yes, I was one of them).
-1 for being completely arrogant
Jack Marchetti
One word 'XML Literals', err two. VB.NET is real, though I use C# by choice.
Didn't Luhmann ask this NOT to turn into a religious language war?
Jeff Hornby
C is used in lots (a minority but still lots) of apps, just not sensibly for GUI-based ones. may be pointless ideologically, but not practically.
-1 for "VB6 developers shouldn't be writing professional software anyway".
-1 ignorance and arrogance about VB.
-1 for trying to start a language flame war, which the poster specifically asked you not to do.
-1 for ignoring poster's request for no language bashing
+1 for ignoring the poster's request for no language bashing
How did this get here I am bad with computer
+1  A: 

My long-term prospects with the company would be more important than the language of the project I was starting on. If I am hoping to stay with the company 10 years, odds are good that I'm not going to be spending 10 years working in VB.NET.

So, my job choice would be based much more upon what I thought about the company in the long-term, rather than what I thought about the current technologies the company happened to be using when I was hired.

Jeff Wilhite
VB's been around for a long time and it's actively developed. How wouldn't someone be spending 10 years in VB as opposed to any other language (of equal abstraction from the machine)?
+8  A: 

As a programmer: I have no objections to learning a new language on a job. My concern for the language would be its benefit to me later on. I would not want to learn an obscure language that is used only in Elbonia.

As the employer I would not change language to suit the programmers. Your shop selected the language for some other reason right? Then if the language suits what you are doing then no need to change. I think that it is a legitimate question when selecting a language big is the pool of available programmers? If the language you are using is obscure and you find yourself having to pay more for the few available programmers then maybe its time for a change.

Vincent Ramdhanie
This is all fine and dandy unless the reason your shop chose that language is a dumb one. (Well, I did some Basic in high school and I liked it so lets go with VB. It's popular right? )

To me, not so important. While it is more pleasant to work in a garbage collected language with great libraries, like C# or Java, it's certainly possible to work in less efficient languages. I've spent most of my career doing soft real time work, and have worked in Ada, C, C++, Java, C#, various scripting languages, and a couple one offs in some relatively obscure languages. That said, I look for jobs that will keep my skills current. So, if it was Cobol or VB6, I would probably not take it -- since those languages are dead.


I wouldn't turn down a good job because I didn't like or hadn't used the language. In fact I would think of it as a challenge. If the language is really that bad, you could try to persuade people to switch once you've given their way a try. The language really shouldn't matter much at all.

If I were your company, hopefully there was a good reason for choosing the language that was chosen, and if a prospective employee is too stubborn to realize it, do you really want them on your team?

+8  A: 

I probably wouldn't consider a job requiring VB.NET, but not because of the semantics of the language -- most job postings require "4+ years experience in (lang)" and the few times I've ignored that request, I ended up interviewing with somebody non-technical who didn't understand that picking up a new language is fairly trivial.

Cory Petosky
I wouldn't say trivial. It depends if their mind is on the short or longer term... but yes many HR people just play it by the numbers.
+1  A: 

I recently started a job in C#, when my experience has been in VB.NET. So far it has been great and I get to work with/learn another language. I am just happy that the initial HR people didn't toss my resume aside cause of my limited C# experience from a couple classes in college.

I would say that the type of work would affect my decision more than the language. So if I am looking to be a web developer, I would not take a job working in COBOL.


The language is only a way to interface with the computer language. Each language has its peculiarities, but probably the specific language it is not very important respect the ability to find a solution for a problem.

Maybe I am wrong, but I ignore jobs requesting, since I think they probably need a "UI-only" programmer for "quicky" applications.


So my question is firstly, how important is language for you, when you choose a new programming job? Lets say if its a great company, salary is good, and generally an attractive work-place. Would you say no to the perfect job, if the language wasn't your preferred dialect? VB or C# is one thing, but how about Java or C# etc.

Platform/stack is important. Dialect/version, less so. Companies change platforms a lot less often than they upgrade to a new version/dialect of the languages within those platforms.

Secondly if the best developers won't join your company because of your language or platform, would you consider changing, to get the right people?

Why was the platform/stack chosen in the first place? If it was arbitrary, you'll have to weigh your investment+rewrite/refactor against the potential productivity difference between the developers you're getting and "best developers" you're losing. If it was not arbitrary, you'll have to factor that cost in as well.

Bottom line, unless you're getting the dregs (who you shouldn't be hiring anyway) it rarely makes sense to change languages without a strategic (read: money) reason.


All of the good VB.NET developers I have met (I haven't met many VB.NET devs), were C# developers that switched in order to have the opportunity to work for the company they work for. So it is possible to get people to switch if the opportunity is right.

For me personally, as a contractor, I haven't turned down a job because it was VB.NET. If I were to take a full time position, the opportunity, benefits, and everything else would have to be unheard of for me to take a VB.NET job. Not because I can't program in it, because I can, but because that's where I feel like I have fun when I program. I prefer the language, and to endure several years of several hours of work, I want it to be in the language I enjoy working with.

I wouldn't say that there aren't any good VB.NET developers out there, but certainly if you look at the .NET open source community, it is largely C# development, and I think that tells a story. VB is a language that was developed to make developing on windows easier, and has been a mainstay in corporate IT departments for years. C# was developed as a new language with C and Java developers in mind to consume the .NET framework. Not that there aren't solid VB developers out there who have been doing it a long time, but they probably come from a different background than a typical C# developer, and have different experience.

Looking outside the C# vs VB.NET debate, I probably wouldn't take a job in php, ruby, or F#, because I wouldn't feel comfortable. In C#, I can confidently sell myself as a senior developer, but not in those other languages. I could and would like to learn more about those languages, but I think it would have to be to satisfy my own personal curiosities. I don't think I'd be willing, at this point in my career, to take a pay cut to work with an unfamiliar technology.

+20  A: 

If there's one thing I learned about software development is this:

There's no programming language. There's programming logic.

The fluency of a developer in any language is, IMHO, inconsequential as long as he or she has the logic skills necessary to do the task.

A good developer could program the same thing in C#, VB, java, COBOL, Ada... Only requiring access to the language specs.

Granted the speed would vary greatly if the said language is not familiar, but the job would get done.

For instance: I can code the same thing in C# as fast as I code in VB.Net that is my language of choice, as I have a long standing with it, but if, say, someone asked me to code something in, I don't know, Brainfuck, I'm fairly sure I'd be able to, although speed would be a crawling one...

Paulo Santos
Okay, you try coding something significant and interesting in COBOL. Then, assuming you manage to succeed, tell us how you liked it.
David Thornley
I agree with this answer (and upvoted!) with this addition: For solving business problems. @DT: COBOL is not dead and your paycheck probably came through some COBOL code. I'm more interested in the ability to solve problems than in which language we do it in. that said, we do use the same langugae across all projects and no, we're not writing operating systems.
No Refunds No Returns
I agree, but the language imposes certain complexity, which probably depends on grammar, syntax and base library and many other things. What about documentation, portability and scalability?Learning a language could be easy, but to implement correctly a very "heavy" application requires the knowledge of the specific language to have a great success. And the knowledge can be acquired with time.Indeed, if a job post requires 1+, 2, 3+, 4+, 5+ years, it declares how many experienced you would be to get the job.
@David Oh! But I have already done COBOL... in punch cards no less! Writing pages and pages in code sheets ( -- it's just a sample for those who doesn't know what a code sheet is), having to sort all them out when the cards scattered through the floor... Oh, those days... Hours and hours of bench test before delivering the code to the operator, because you only had one chance to compile your code per day. And receive the compilation results... after five hours... Yes, I do know COBOL.
Paulo Santos
I agree with this, any programmer worth their salt is going to be able to pick up a new language fairly easily unless it is completely out of their paradigm, even they it will just take them a bit longer. That said I think the tools that support the language are probably as important as the language itself. I would probably love coding in COBOL if they had an IDE and framework as nice as the one they have for visual studio.
Imo "The fluency" and speed of a developer isn't that much related to the language but to the knowledge of the framework the development takes place in. E.g.: If I knew how to write c++ fluently but had no clue about the existence of the Boost library or the STL, I would still be implementing linked lists form the scratch.
@David, then take a look...
Paulo Santos
now explain this to HR people thanks
Brian Leahy
@Paulo Santos: So we've worked in COBOL under similar circumstances, and probably similar versions. Are you telling me that the lack of true functions, to name one problem, never bothered you? I'm not saying COBOL is useless, I'm saying that it is distinctly worse than C++ or similar languages for a large set of problems, in that it is impossible to express as many concepts directly, and some require a great deal of circumlocution.
David Thornley
@David, the set of problems that COBOL were aimed to solved it's really long gone and the language structure for today's application I must admit is lacking.
Paulo Santos
It doesn't sound like you answered the question. Yes, you could conceivably solve a problem in a given Turing-complete language, but the question was how would the language affect your choice in programming position?
Sarah Vessels
The problem is mindset. Switching between C#, VB.Net, Java and C++ is easy. PHP, Perl, Python, Ruby - sure thing. But try seating a Web programmer in front of a microcontroller with some embedded C, and you'll quickly see how lost and helpless they become.
A developer, who codes equally good in every high level language only using specs has not understood even one language he is using. Also, a software is not just some code. It has life cycles. It requires a lot of maintenance, which in turn requires high code quality. Good languages promote their own paradigms and concepts, and not using them just results in overly verbose hacking (about like translating a poem with google translate). The task is not to write a program, that can do A and B, the task is to produce a software, that doesn't require a complete rewrite if you want to add feature C.

Make it clear to the applicants they don't need VB skills to get a great salary. After all, Fog Creek use their very own .net VB-like language, or used to (wasabi) and they are keen on getting good coders.


I don't think the language really matters that much, but knowing the framework and possibilities really does. I recently started to try some Java programming. The language really wasn't the problem but coming from the .net framework crawling through the java docs to find the proper classes to get the job done was really challenging / time consuming.

+6  A: 

If the job is not using LOLCode then I don't think I would want the job.

+1 for metioning
+19  A: 

My Resume cries when I work in VB .NET

Recruiters look for Years worked in X. They have no conception of what is different about the language etc.

As a C# developer I can get a job in VB .NET easily, however a VB .NET dev will not as easily get a C# gig. Why? Lack of respect for VB .NET.

Every month I worked in VB I felt my resume cry out in pain. It looks bad. From the recruter's perspective C# devs can work on VB no problem, but not the other way around.

I do recomend working on both so that you don't use <> for string comparisons that are case sensitive. :P

I would not take a perminent position in a non-standard language nor in VB .NET. It hurts my future prospects. A contract for 6 months, sure. I'll do anything once.

Brian Leahy
Unfortunately I think you might be right about that - at least you will probably have to proove your skills even more if you are up for a C# job, and you come from a long-term VB gig.
On your resume you can simply say ".net development" can't you? Hopefully anyone who actually interviews you will know better.
@ John LOL. The people that stand in the way as gate keepers to the person that actually knows anything about programming... Those people don't know squat.
Brian Leahy
So? Boycott recuiters, not the other way round. They’re basically parasites living off a fat industry. Why should we give them the power to shape *our* garden? Also, I agree with @John. Just put “.NET” on the resume.
Konrad Rudolph

So my question is firstly, how important is language for you, when you choose a new programming job?

For me, I would only consider a job where I would use a language I disliked if I were desperate for a job. So far I've been lucky and haven't been in that position yet. The main language I'll be programming in at the job is a major deciding factor for me because I know I'm just not happy using some languages. For example, C and C++ greatly frustrate me, so if it were a choice between a Java/C#/Ruby/PHP/any-other-language-I-like job and a C/C++ job, I would go with the former. I'm going to be spending a lot of my time working at a given job, and my happiness while I'm there matters to me. That happiness is directly affected by the languages I have to use daily.

Sarah Vessels
+3  A: 

Well, having written commerical software in over 35 different languages, I can say that the languages evolve over time. I did significant work in COBOL, Basic, etc. as well as my current position where we have both C# and VB.Net code. While I "prefer" C# at the moment, it is not a show stopper.

More important: but not in specific order

  • How interesting is the work
  • How easy is the team to work with
  • Am I contributing, or just pushing sand - maintenance is one thing, but reworking over and over to meet the current whim is not desired.
  • Other stuff outside the scope here

That being said, there are some projects where I would need a larger differential from a compensation standpoint to take an active participation in than others.

Mark Schultheiss
35?! I don't even think I could list that many...
Well, when the operating systems vary from CP/M, DOS, MS-DOS Unix, Xenix, BTOS/CTOS, Windows(3.1 til now), OS/9, AIX...and more, it gets pretty long quickly. On some the OS WAS the language.
Mark Schultheiss

Personally, I wouldn't switch from C# to VB.NET for a job.

Although many people will say that the language is not all that important while on the job, it is important when looking for the next job. One of the hardest things to do during an interview is to find a good ENGINEER, not just someone who knows a given language. Taking a VB.NET job now might limit future opportunities.


As a programmer currently looking for work -

I can program in about anything out there, given a bit of run-up time. Don't make knowing the language a prereq unless you're looking for a guru or something highly non-traditional.

I would be suspicious about a VB6 shop: I'd think that it was behind the times and incapable of innovating.

If your project is interesting and more than simple CRUD, I don't think VB is an issue.

Paul Nathan
A VB6 shop might simply mean their product is more than a few years old, or they work on a long-lived system. You don't just switch millions of lines of code to a new language because it's 'new and cool'

These answers are too complicated. Choose a language you like, so you can have fun at work. Period.

+4  A: 

If a programmer refuses or shows irritation to work for you because you use, they're not the person you want. They might be a great developer but they are also likely a prima donna and you want professional team players, not arrogant lone wolf developers.

Make it clear cross-training is available when asked, and just advertise for a ".NET developer".

+1, Knowing a certain API is much more important than knowing a certain language... Sure any programmer could pick either up. But in my opinion picking up a new API is more difficult than learning a new language

I don't think I could have fun writing code in VB.Net. Even the small parts where I have to use it, because the VS team decided to force me into VB.Net to write macros, have always been a major pain. I really dislike reading it and even more so writing it. I don't want to start a flame, which is why I won't say what I don't like and why. It just doesn't feel like something, that I would ever choose if I really have a choice.

I really like the company I work for. Yet, I would quit if I had to write more than just my convenience VS macros in VB.Net.

Robert Giesecke
Nope, but when you you spend a third of your life at work, you have to have fun. And I can't have that with weird-looking code.
Robert Giesecke

It's a showstopper factor.

I know the job interview will ask me questions of their primary language, including caveats that require a year or more of experience, and I will fail these questions. I know I will be seated in front of a computer and expected to learn the -internal- system by fixing something that is always assigned to the "new guy", and to do that I will need to know the language fluently. In other words, no matter how skilled a professional I would be, if I don't know the language, this is not a job for me.

Sure I can learn the language. It will take about half a year to reach higher-intermediate level required to write production code in it. By then the position I was aspiring for will be long filled.

And I don't want to work for an employer who employs people who don't know a thing about a platform they work on. If they give me a job which is based on a language I have little clue about, I can be pretty sure mostly nobody on my team will know a thing about it either, and the resulting product will be a clusterfuck made by a bunch of amateurs in this particular domain.

Sure if I was applying for intern or trainee for token salary, that would be acceptable and expected. But currently I'm pretty good in several fields that both require expertise and yield respectable salary. I have no reason to apply for a job I'm not good at, because if I do, either my salary will be below my expectations, or my employer will be willing to waste too much money on incompetent employees.

So you took your first job, and have been pigeon-holed into that programming language ever since? Seriously? It does take months to become proficient in a new language but any decent developer can be productive after days or weeks... I've had to do this with Java, VBA, PL/SQL amongst others.
@John: No. I know a primary language of given job. Then I learn other languages, either as part of that job, or on my leisure, and become proficient in them. If I want to switch jobs, I pick a job that matches my skills, including the newly-acquired ones. And then I spend days or weeks of my time getting people like you proficient. I assure you getting an enterprise Java developer to write efficient programs in C++ for Embedded is a herculean task. They may know the meaning of `|`,`~` or `<<` but the meaning and usefulness of `x ` is black magic to them.
So you agree with me then. Days/weeks to get proficient, months to get good. Your example is asinine though. Embedded programming is very specialist. A sensible example is J2EE -> or C++/MFC -> C#/WPF
I happen to have two specialties: Web and Embedded. Hard to find two domains further apart. Yes, getting from Perl to PHP is easy, switching from C/8051 to C++ Linux/ARM is quite doable. But part of my current work is fixing the utter MESS an "Enterprise applications" (C#, VB.Net, J2EE) programmer did of the Linux/ARM C++ embedded app I'm working with. I have no doubt he was good in his domain. But for God's sake, if a common workmode change kills 60 objects and uses a Factory to rebuild 60 instances in a different variant, in a realtime system... He worked a year. He didn't get proficient.

As a programmer currently looking for work - I can program in about anything out there, given a bit of run-up time. Don't make knowing the language a prereq unless you're looking for a guru or something highly non-traditional.

As a programmer also currently looking for work, nothing annoys me more than the expectation of an employer that you will know everything there is to know about a language from day one. Part of the reason anyone looks for a job is to actually learn something new. I had a lot of experience in PHP but until I did a particular contract I had no reason whatsoever to know or use Perl. That job was my first-ever exposure to Perl, and I will never forget what happened that day when I came into work the day after getting the job:

My boss: "We need you to build tool X in Perl. Have you ever used Perl before?"

Me: "Nope."

My boss: (throws Llama book in my direction) "Here you go, have fun!"

My boss was a fantastic programmer, and he gave me the time necessary to become familiar with the then-new-to-me language. Inasmuch as you need to get work done, the employer should also allow you to actually learn the tools you need in order to get the work done and not expect you to be able to teach Brian Kernighan C programming within 3 minutes of reading The C Programming Language for the first time.


One should only go for jobs in languages they are already proficient in. There is enough new things to learn when one joins, such as the business problem, procedures, that one needs to add another factor. Being a good programmer is not about knowing a language, its about knowing everything else that goes with the language, the libraries, popular frameworks. A language with no libraries is almost nothing. The reason that Java took over the world is in coincendence related to its very very broad range of libraries for all sorts of problems. WHen you know a language you also know a lot of the extras one needs in one tool box.

Would you hire someone for your team that didnt speak the same language ? Do you really need another get in the way...


I think the primary question is, why you chose that language.

I'm a web developer and I often join in on projects, that use languages I consider crappy. In general, these languages are used, because people don't know any better. To illustrate my point: I think PHP is a really poor language, and I can point out a lot of alternatives and really explain why I think each of them is better.
But I often face people, who just don't understand it, because they've basically never actually understood a language other than PHP (at the level of PHP3). Trying to explain why compile time type checking, generics, first order functions, structural subtyping, a consistent standard API or other features PHP doesn't have, are good, proves to be pointless, because they never experience how using these features feels in action.

There are many languages, that are at the same time popular, because of their forgiveness, ease of use, and looked down on, because of their lacking safety and their triviality. VB.NET is one of them. If you compare deployed code in JavaScript and in, let's say, OCaml, you quickly understand why experienced developers dislike these kind of languages.

None the less most of these languages can be used in a serious manner, although often you will find out, they simply lack some key features or are very ambiguous and unsafe in some points. If you are trying to convince a good developer to work with such a language, then you should try to explain him why you are using it (sometimes there are reasons). Also, if he is interested, take some time to show him your code base (presuming that you have code base that you consider good). If you have no particular reasons and your code is crap (and a rewrite would be reasonably expensive), then actually switching is an option you should consider.

For example, if someone tells me, they're using Java because basically they learned it at school and because they never learned anything else, or because the management heard Java is good, I wouldn't wanna take the job. Ever. If they use Java because of specific frameworks and libraries, that already get half the job done, then I fully understand, and I am willing to set aside my personal objections to Java.

Also, I you're posting job offers, you might get better people in an interview, if you point out that you want experienced developers, possibly with Java/C# experience. It should help emphasize that you're not just offering a "scripting job".