Career path: C# versus VB.NET

Hello,

I am coming from an assembly / C background and I am ready to move into building databased business applications in .NET.
My plan is to go as far as possible and become an .NET architect who is familiar with OO and Patterns. Since I am totally new to .NET, my question is what is the better language to start: VB.NET or C#. And what are the reasons?

I would say go for C#, now this is probably due to my background as a Java developer and later on C# developer. I have only lately been doing VB.Net development (maintaining legacy code). And one tends to recommend what one is most used to.

But since I started developing in VB I found it to be more cumbersome to use than C#. A benefit of using C# is that I have found most OSS and blogs are using C# which makes it easier to find examples. You will also get the benefit of understanding Java.

Also you need to take in consideration that C# is standarized so you find products from other companies more likely to be focused on C#, specially you can find C# implementations to write apps for Linux and iPhone (go-mono.com)

You may someday ask to write something for silverlight and pretty much everybody is using C# on silverlight

If you are planning to become an Architect, you should learn and be able to use both. As someone has already stated, its a tool.
I dont mean that you will not have a favorite, because you will. But you should be able to switch from one to the other without issue.

* There are more examples out there
* Most third party vendors uses C# as their main language
* More jobs
* Clean and easy syntax
* Easier to read than VB.Net (I think)
* The syntax is very similar to Java, C++ and various other

Before I started with C# 5 years ago I was a Visual Basic 6 developer and the transition from VB6 to C# was actually easier than VB.Net.

As an architect I don't think you need to know both languages equally well. Specialize in one, and know a few thing about the other. It's far more important to know the .Net framework and the various technologies it offers (WF, WCF, WPF, MEF, EF, LINQ) and how and where to use it.

I started dynamic web development initially with classic asp in which there was not much choice to begin with. vbScript was the way to go back in those days. So it was natural for me to pick VB.NET when it came to ASP.NET. I used it for a couple of years and since I was still developing for web, at some point it became apparent that I needed to do increasing amount of client side coding with JavaScript. There was one project in which we needed to use it a lot. So I became more familiar with the c-based syntax. Regardless of my years of experience with vb-syntax, I found it hard to revert back to it. So I naturally just switched to C#. I never regretted the change. C# still feels like a better choice with more possibilities. Besides, if you need experienced peer support with complex or advanced problems or with new technologies, you may expect to get it from the C# community. As for career opportunities, I believe you're better off with C#. There are more job openings, admittedly also more competition. Last but not least, with C# you wouldn' t be locking yourself into a corner. As a lot of other languages share most of the syntax.

I'm primarily a C# developer however i don't believe C# is more OOP than VB.net, both languages has it's pros and cons, if your background is C/C++/Java then it's more logical to go with C#.

at the end of the day it all goes down to where you are more comfortable working with, both languages supports pretty much all the OOP features you'd need, can do the same design patterns, supported by the same framework.

Concentrate on one but also be open with the other as to when an opportunity arises that you may need to switch languages for a job then you could easily switch between the 2.

even with the samples on the web more focused on C#, there are tons of online and offline converters to switch it around.

you could check out comparisons between c# and VB.net but on the top of my head

C# can have Partial Interfaces and VB.Net can't,
Static classes is also not available in VB.Net (although I believe Modules in VB are already sealed static classes so this becomes pretty much the same already).