Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at
Intro to series on quality VB.Net

Recently, there was a discussion on twitter regarding the sophistication of VB.Net development.  It's worth noting that there is a very firmly held belief among C# developers that VB developers care less about the quality of their own work and that they are not interested in good techniques or self-improvement.  Interestingly, there is a related belief that VB.Net as a language is so inadequate that it is literally impossible to code using what is generally understood to be good practices.  For those of you out there that may be primarily VB.Net developers, I am NOT attacking you, (continue reading to see that) but it's worth knowing that in the greater .Net world, your reputation isn't so good, and that may be affecting your job prospects-strategize accordingly.  Practices increasingly well accepted in Java and C# are barely making a dent in common VB.Net development at this point.  As it is, VB programmers trying these accepted ideas may feel like trailblazers... and frankly, that's pretty tiring work that not everyone is up to.  Convenient that in the C# world, the path is getting fairly clear.

Personally, I have done a fair amount of both C# and VB.Net, and find that it's definitely possible to write code that follows widely accepted principles in VB.Net.  There's nothing in the language that actually prevents use of ORMs like NHibernate, IoCs like Windsor, or SOLID principles.  Admittedly, I feel VB.Net is wordy to the point of being more difficult to scan visually, has some silliness (see AndAlso vs And) is missing some nice featues (see auto properties and lambdas), and tool support is weaker than for C#(see Resharper, and even Visual Studio itself).  I find C# to be an overall lower-friction coding exerience.  However, there are many developers who still code in VB.Net, whether because of preference or because of the situation on a particular project. They're doing the same job as the C# programmers, in a language that's fundamentally pretty similar to C# and can even interact directly with C#.  I want to let developers of both stripes know that VB doesn't mean having to give up good practices. 

In that spirit, I'll be doing a series of as-yet indeterminate length on implementing these practices, focused primarily on VB.Net, with C# for clarification or contrast where helpful. 


Posted 01-12-2009 10:41 PM by Anne Epstein
Filed under:



Christopher Bennage wrote re: Intro to series on quality VB.Net
on 01-13-2009 9:04 AM

I agree with completely. I had an epiphany a year or two ago when I stumbled into a nest of Classic ASP (not Classic ASP.NET formerly known as WebForms, but the classic Classic ASP). Anyway I stumbled into the nest and realized that the bad reputation of Ye Old ASP has little to do with the language platform and mostly with the mindset that was brought to it.

I grew up in the VB world, and converted to C#ism under the influence of Rob Eisenberg about 5 years ago. I haven't looked back because I too "find C# to be an overall lower-friction coding experience."

chrissie1 wrote re: Intro to series on quality VB.Net
on 01-14-2009 5:49 AM

I don't think it will really work if you first look down upon them and then try to teach them how to do it the right way. Or what seems to be the right way nowadays, things change fast in this world.

The best way to learn it the right way for me (and everybody knows I still use VB.Net by now)  was to go to Java which in general embraces the best practices better and it is so far away from .Net that you don't get bothered by it, but it still close enough t help. Then you go back and The right way becomes much easier to learn.

Rodrigo wrote re: Intro to series on quality VB.Net
on 01-14-2009 6:03 AM

I think lots of people use because of the VB /Classic Asp background. I was a classic asp developer and when I decided to learn .net I chose because it was easier. But now I use C Sharp and never want to look back.

David Mc. wrote re: Intro to series on quality VB.Net
on 01-14-2009 8:41 AM

I use VB.NET or C# (depending on the client), they're very similar with some minor syntax differences.  I do enjoy not having to care about case-sensitivity though when using VB.NET!  Switching between the languages is very easy for me, only rarely do I hit a block where I can't do something in VB.NET that I could do in C#.

I think it's great that you're stretching out to cover VB.NET, because I think some newer VB.NET developers aren't able to translate C# on-the-fly as they read about best practices, patterns, etc.  I know that Google searches for information when you specify "VB.NET" in your query turn up less results than if you just specify ".NET", and most of the time example code is in C#.  Maybe your series will rise to the top of Google's search results for "VB.NET best practices"!

J.P. Hamilton wrote re: Intro to series on quality VB.Net
on 01-14-2009 9:08 AM

I was probably the first person to write about SOLID principles in the .NET context. Unfortunately, it was in a VB.NET book for O'Reilly. I say unfortunate because my time would have been better spent writing for an audience that actually cares about such things.

I admit, I am writing VB.NET code these days, but only because my current client forces me to do it. The language itself does not prevent me from writing quality code. However, from what I have seen with my own eyes, most VB'ers are completely unaware of software best practices and worse, show no interest whatsoever in overcoming that ignorance.

Zac wrote re: Intro to series on quality VB.Net
on 01-14-2009 10:13 AM

I'd contend that it's easier to learn VB than C# as an entry language so naturally there will be more slop.  The slop is a reflection of the developers experience and passion to improve their craft rather than language.  Thank you for being objective and not having a trendy VB bash session. :-)

Zac wrote re: Intro to series on quality VB.Net
on 01-14-2009 10:17 AM

One other thing, there are things that can only be done in VB.  As I remember the 2005 release of SSIS only supported managed code written in VB.

Anne Epstein wrote re: Intro to series on quality VB.Net
on 01-14-2009 10:41 AM

chrissie1, I'm sorry if my post came off to you as "look[ing] down on them" as you said-that was certainly not my intent!  Though my personal preference is C#, I have also done VB.Net on and off for the past several years, and for a variety of reasons specific to the project, am using VB.Net almost exclusively in my current project.  

Though it's excellent it worked for you, I'm not sure that the technique of temporarily going to Java to learn best practices is really feasible on a larger scale as an approach to the issue of less knowledge of best practices in the VB.Net community.  It's currently easier to learn these ideas in the Java community as they are much more prevalent there, but there's no fundamental reason best practices can't eventually be prevalent in VB.Net as well, and there's no reason VB.Net programmer's can't be full participants in the ongoing discussion of refining best practices.  With this series, I'm attempting to help those who are programming in VB.Net to find a quicker, more direct path to better practices, for those who choose to look.

Robin Clowers wrote re: Intro to series on quality VB.Net
on 01-14-2009 12:55 PM

I'm not sure who thinks VB.NET is so inadequate that you can't write good code...  Anyone who has taken a glance at it would see it is fully object oriented and has most of the same features as C#.

chrissie1 wrote re: Intro to series on quality VB.Net
on 01-14-2009 3:00 PM

Anne It was this part "among C# developers that VB developers" that did it for me. To many developers/people seem to make a difference between the two. It is starting to sound like discrimination based on the language you use.

I can only say that it was more difficult to learn things like StructureMap, Rhino mocks, Nunit, ... not because it is or was impossible just because the examples aren't there. Something that is easily fixed using reflector.

So hopefully Google will have your blogposts on the top of the list so that VB.Netters can find them more easily. The problem is that the people that will be looking for this code already read blogs like these.

It's also a chicken and the egg thing. If you don't know about IoC then why would you go look for it?

Sorry to sound to negative. Let's blame it on Jeremy, he's used to it by now ;-) (joke, reaaly)

Grant Palin wrote re: Intro to series on quality VB.Net
on 01-15-2009 9:43 PM

I'm happy for this development. I started programming with VB6, and have since moved up to VB.NET. In recent years I have been getting up to speed with development tools, practices, etc, as my blog will show.

The bias against VB rankles me, and I welcome any tutorials or articles that seek to reduce the divide between the two camps.4

Weekly Links #36 | wrote Weekly Links #36 |
on 01-18-2009 10:36 PM

Pingback from  Weekly Links #36 |

Anne Epstein wrote VB.Net and the Case of the Iffy Ifs
on 05-12-2009 3:31 PM

Previous Items in Series: Intro to series on quality VB.Net VB.Net and the Spaghetti Code Of Doom In

Kevin LaBranche wrote re: Intro to series on quality VB.Net
on 01-02-2010 1:24 PM

I agree and I think you have given a well rounded answer in that VB can do it but it seems that many who are using VB do not. For a while now I have been diving into topics like DI, IOC, SOLID, etc & almost all examples/tutorials & books talking about it has used c#. My first exposure to VB was back in the 3.0 days and real started using it professionally in 6.0.  Since then I naturally moved to VB.Net and only now have really started to branch out a little with C#.  (Shame on me by the way for not writing in other languages).  

I am not sure why VB has this issue.  As you stated, it is possible to do.  Perhaps it's a holdover from VB's beginnings?  What do you think?



Anne Epstein wrote re: Intro to series on quality VB.Net
on 01-02-2010 11:06 PM

Kevin, thanks for your comment!

I can't  say for certain, but here's a completely unsubstantiated theory: it may be more common (or may have been more common a few years ago, at least) for VB programmers (vs. C#) programmers to have become programmers via Excel/Access programming and the like, i.e. very concrete procedural-type tasks, whereas I'd guess at least historically, C# programmers are more likely to have roots in university than VB programmers and thus by default arrive into programing with a stronger background in abstract thinking (though some argue, a weaker background, in, say, thinking about things practically)  Any particular programmer favoring either language might be nothing like the profiles I've outlined, but if on a larger scale the body of programmers in each language trend slightly like I have described, that might be enough to change the language-wide stylistic preferences and the like.  Again, I may be completely wrong in this theory, there may be something else entirely behind the difference in culture.

Kevin LaBranche wrote re: Intro to series on quality VB.Net
on 01-03-2010 10:06 AM

Your theory at least sounds good. :-)

I never thought much about the VBA to VB connection and in that case I would agree that this connection didn't teach much on code quality.  VB was designed for RAD and it did that well.  VB's beginnings pioneered / fostered RAD development but now other languages have caught up but where those communities kept going with quality ideas, VB did not.  Perhaps the idea of RAD hindered the ideas of code quality and now the VB community needs to catch up.

......And of course, I could be way wrong on that to. :-)  

Not that the why matters much as you mentioned in your tweet to me.  I am really curious personally to understand why since I have been a VB'r for a while and know the language isn't perfect but which one is?  

None the less, to make myself a better developer I have been working in C# on the side and have enjoyed it.  My initial adversion to semi-colons is gone.  =)



craig david wrote re: Intro to series on quality VB.Net
on 03-02-2015 7:31 PM

KVQDIc hi!,I like your writing very much! share we communicate more about your post on AOL? I need an expert on this area to solve my problem. Maybe that's you! Looking forward to see you.

crork alise wrote re: Intro to series on quality VB.Net
on 03-09-2015 1:15 AM

p3BfsA whoah this blog is great i love reading your posts. Keep up the great work! You know, a lot of people are searching around for this info, you can help them greatly.

find a free pron wrote re: Intro to series on quality VB.Net
on 10-14-2016 10:32 AM

G35z2y Im thankful for the article post.Thanks Again. Cool.

Add a Comment

Remember Me?

About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Google Reader or Homepage Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of
Red-Gate Tools For SQL and .NET


SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
NHibernate Profiler
Balsamiq Mockups
JetBrains - ReSharper
Web Sequence Diagrams
Ducksboard<-- NEW Friend!


Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers


Community Server (Commercial Edition)