In a somewhat unrelated comment to
Sahil's really-should-remember-but-gonna-forget-and-get-bit-in-the-ass post, Scriptor pointed out how little VB is used here at CodeBetter. While I'm too new at CodeBetter to really comment to that specific charge, I've always have something to say about the VB.NET vs. C# thing.
When it comes to writing .NET material, it obviously depends where your material is going to end up. Although blogs have become leading sources of technical information, it's unreasonable to ask bloggers to use more than one language (I know that's not what you were getting at Scriptor). When you are writing an online publication however, any downloadable samples should be available in both languages (unless the example is extremely trivial). If you only make it available in one language, someone will ask for it in the other (sooner rather than later). What about code samples within the article? Well, every time I wrote an article for MSDN, I was gently encouraged to make sure the samples were available in BOTH languages. Personally I find this makes articles too cluttered and is really unnecessary (though I did do it at first). I strongly believe that
the best approach for article samples is to use C# and VB.NET interchangeably. I haven't written a book, but I'd think that's the best solution there also (unless you want to sell a C# and VB.NET version, which I consider lame in most cases).
Now, this really leads to my main point.
Every VB.NET developer should be able to easily read C#. Every C# developer should be able to easily read VB.NET. First, it's bound to come in handy more than once. Second, it's nice to have on your resume or in interview tests. Third, neither language is the dark side - stop being such a nerd. Forth, it should take a very small amount of time to get up to speed with the new syntax. Fifth, if everyone writes their articles/books the way I think they should (see above), you won't have a choice. Spend 2 hours every Friday
with Snippet Compiler and play around in the
other language.
Although you should be able to easily read both languages, what should you write real code in? Whichever you feel more comfortable in. If people are telling you that one's better than the other, or that VB.NET sucks, then there's a good chance they aren't very good programmers (ignorance isn't a good quality to have in this business). VB.NET isn't more productive, and C# isn't more powerful. A good programmer will write good code in either language. A bad programmer will write bad code in either language. Part of me wants to say VB.NET makes it easily to be sloppy, for example one could turn off option strict or use on error resume next, but a bad programmer in C# could just as easily only use System.Object and swallow exceptions. I do wish VB.NET had a 3rd "option really really strict" option that disabled a handful of more "features", but in the end it really is the person and not the language.