VB vs. C# Culture

Recently Scott Belware was taken to task by Scott Greenberger about using the term "Visual Babytalk". This particular conversation has peaked my interest, since I'm a C# developer surrounded by VB developer's who don't understand why I use C#. Mr. Belware does this conversation more justice than I ever could. I've excerpted some juicy points here, starting with Mr. Belware's caveat (which I must echo as well).

So let me just be clear before I get all kinds of, "There are bad C# programmers, too" email, and "I have too read a patterns book" messages. I'm not talking about the segment of VB culture that lives in the far right hand side of the VB developer competency curve. I'm talking about the fat part of the bell curve, and areas leftward. I'm not speaking to authors, speakers, industry leaders, etc, who have an affinity to VB syntax yet still do extraordinary and inspiring work - people like Rocky Lhotka for instance (if I'm ever half the programmer he is, I'll have certainly far over-reached my expectations of professional development in this life). My comments go to what Microsoft refers to as the "Mort persona" for VB developer cultural generalizations.

And neither am I speaking of the best developer I know... who happens to be a VB developer. His name is Check. Yeah, you buddy.

The VB versus C# question isn't a question of language, it's a question of culture - it always has been. Anyone who approaches this question from a language syntax angle does a very important issue quite an extraordinary disservice. It's true, there's not a whole lot of difference between C# and VB when you look at the IL their respective compilers produce. If you really wanna see the difference between VB and C#, have a look at VB and C# programmers' bookshelves, or listen in on their conversations. Give a team of C# developers and a team of VB developers the same application to build, and the conversation about the solution will be likely be as different as the implementation approach.
When the VB6 community saw VB .NET, there was a lot of panic. .NET thinking wasn't a whole lot like VB thinking. That stands to reason - .NET is object-oriented and strongly-typed through and through. Object thinking is non-linear and prescriptive at its best. When the line was drawn in the sand between Visual Basic development and C and C++ development for line of business apps, the intension was to drive business app development out of the hands of the OO, strong-typed thinkers, and into the hands of folks with a more constrained skill set. At that time, all the great computing things that would ultimately form the foundation of .NET was seen as overkill for the kinds of apps that VB developers were geared for. And then complexity took another huge leap and the justification for VB6-oriented approaches began to loose its relevance.

I remember deciding on learning C# when I switched to .NET. I had heard that both languages were strongly typed, and I was ready to face OO head-on (even though VBScript supported OO - I had only recently discovered this - 9/11 in fact). But I had always wanted to become a "real" developer (ala C++), and had even flirted with switching to JavaScript as the language in ASP. I had tried to get VB jobs at local companies to begin my trek towards building cool software (in C++)... to no avail. Hence I was stuck with web-page development (and to some extent still am). So when C# became an option, I jumped on it. It was C++ for the web in my mind.

C# developers don’t frag VB culture because of "EndIf" and "EndCase", they do it because VB culture hasn't learned anything in over a decade about the responsible use of RAD. My personal disapproval for the state of VB culture is largely a defensive stance. I see a culture that is stagnating in a set of cultural values that have outlived their time.
Today's applications demand greater amenability to change which in turn drives layering, separation of concerns, and a few key structural and behavioral patterns, as well as testability. The push towards reuse through services is also driving the need for testability which in turn drives the need for factoring and component design. These are all things that RAD has absolutely nothing to say about. These are all issues of application design and code design. These are all issues that are much more simple to work with when they are approached from an ontological angle and served by objects rather than by RAD-oriented containers like the DataSet. Yet the VB culture seems simply unwilling to wean itself from its crack-like addiction to the DataSet, the inside-out disorganization of logic that its use leads to, and the morbid fascination with seeing how quickly a system can achieve entropy by completely ignoring the notion of "model".
I learned everything of significance I know about contemporary programming from hanging out with Java developers. I don't expect anything of VB culture that I didn’t expect of myself when I leaped from FoxPro to JBuilder. The view from mid-air is terrifying, but thrilling too (then again, I'm a hang glider pilot so my tolerance might be a little skewed).

Doh! I remember some long nights when I switched from writing ASP applications in VBScript to ASP.NET in C#.NET. Oh, you better believe the view from mid-air is more than a little terrifying.

Visual Basic developers and C# developers aren’t made of the same stuff. Am I saying that C# developers on average are better than VB developers on average? Yes, absolutely, without a doubt that's exactly what I'm saying - but only because the VB .NET bell curve is skewed by that massive cast of characters who are still doing VB6 on the runtime. I agree that in the .NET world that it's all about the runtime, and that whatever I can do in C# I can also do in VB .NET. But, I don’t believe for a minute that the average VB developer who lives by doing VB6 on the CLR can come close to doing what the average C# developer can do with test-driven development, refactoring, domain objects, patterns, and a an approach to data access that isn’t muddling about in a low-level API like ADO .NET.

I couldn't have said it better myself. I work with a developer, and though he can code in both C# and VB... his code has the distinct feel of VBScript. Everything is a string. Everything. I'm not kidding. Everything is a string... from beginning (form) to end (sql). It stunned me at first. I couldn't believe that his code was so weakly-typed. But he said to me repeatedly - "It works." I have to admit, it did. But why would you do that? That's a culture I have difficulty wrapping my head around.

Where is the love you ask? It's right here stamping out this blog entry today rather than doing for-fee project work. It's right here telling you straight up and clear what insiders are willing to talk about off the record but not in public within earshot of the Babytalkers. It's beating in my heart when I spend my free time tutoring Microsoft developers who are interested in leaving their crutches behind and reinforcing their relevance as time and complexity march on.

I'll tell you where the love is not… It's not coming from certain fearful cadres within Microsoft that believe that VB developers can't hack it, who handle VB developers with kid gloves, tell them what they want to hear, and feed them soothing RAD baby food rather than suggest that maybe it's time they did some of the reading and experimenting that wasn't required of them when VB6 approaches were relevant.

Love is C#... and it beats in my chest everyday, even when the IDE crashes, or Intellisense curiously dies for me - but not my VB counterparts... I code in C#, because I love technology. If I coded in VB - it would be just for the paycheck (and I would feel like I had stepped back in time).

posted @ Thursday, February 10, 2005 6:23 PM

Print

Comments on this entry:

# re: VB vs. C# Culture

Left by Ron at 5/3/2005 10:14 AM
Gravatar
I couldn’t agree more. I’m new to the industry and coming out of school I had VC++ and thought myself C#. A year latter at my first full time ‘programming’ job I too have been forced into asp development using VB. Wow, ‘on error resume next’, I can handle variant types and never using anything but a string… but why would you ever tell the compiler “I don’t care what happens in the next block of code, just plow through it, I’m sure we’ll make it though”

# re: VB vs. C# Culture

Left by Steve Hartzog at 5/3/2005 10:25 AM
Gravatar
ROFLMAO... That is SO TRUE! :D

# re: VB vs. C# Culture

Left by Tomahawk at 5/5/2005 11:03 PM
Gravatar
Everyone has their own coding methods, I've been coding since the dawn of the ZX-81, I use VB.Net ASP.Net C#.Net and C++.Net as well as Oracle and SQL Server. Every language has it's place, who are you to say what's best! You have to understand the hardware and operating system to know whats best for a given job. You sir should get off your high horse. Your point of view is obviously clouded by the fact that your head is stuck up your jacksy.

# re: VB vs. C# Culture

Left by Dan at 6/17/2005 2:45 PM
Gravatar
Have to agree with the overall message of the original blog post. It is not neccessarily the language itself it is the skill and attitude of the MAJORITY of people using VB. This type of discussion goes on between every "new" language that pops up. Ask and old assembler guy about C , ask an old C guy about C++ etc. Unfotunalty IMHO we are at the point now that VB has crossed a line in that it let's the user/programmer be realxed in many of the things they do. This in turn allows the code to "work" but be real in-efficient in those cases. Also I think that VB is so far removed from what is actually going on in the machine when the code actually executes the "average" VB programmer ( not developer or engineer ) tends to look at the machine "wide eye'd" when something goes wrong. Most have not taken the time to understand how memory or CPU registers work or what MSIL is etc. Then when it comes to working out bugs there is a tendency to be a "point and shoot" type of solution rather than evaluating what is going on at a lower level and analizing the problem. The result... spagetti/band-aid code most of the time.

I have done a lot of development with many differnt languages in the 12 years I have been in the industry, including VB. My personal preference in todays .NET world happens to be C# but I am a firm believer in "the right tool for the job". ( In some cases it's the clients "chosen" tool for the job :) Meaning I do think VB, C#, C++, etc all have thier place in the world but lets face the fact that with the wrong person at the keyboard any code can and will be crap. As stated above though IMO there are languages that make it "easier" to write crap code. In all cases though a poor understanding of computer science and the neuances of the language being used will most likely render crap code.

# re: VB vs. C# Culture

Left by Dave at 6/22/2007 9:43 AM
Gravatar
I hate the "It works" so it must be OK crowd. I like what I do, I like the technology. Make something just work feels like a cheat, and it is both to the client & myself.

I like to know what is happening, and how things work. So much so that even though I love .Net & C# especially, I am not hung up on it.

The true underlying knowledge of systems, OOP, and design are the bedrock of programming. I learned C#, and in learning it I learned that the abstract concepts are much more important to coding. Of course the problem domain dictates the solution, but as long as you understand these concepts you can change your design even if that means being inelegant for the sake of efficiency.

# re: VB vs. C# Culture

Left by Jeff at 11/29/2007 11:23 AM
Gravatar
One of the greatest attributes of .NET is language neutrality. The whole idea behind having a language neutral platform is to have multiple programming languages that compete with each other and introduce new and innovative ideas. Then you are able to compare and contrast and use the better ideas to improve each language over time. Remember it is competition that breeds innovation.

# re: VB vs. C# Culture

Left by Lee at 4/11/2008 5:37 PM
Gravatar
Hmmm, yes most languages do have a use in the world... but lets face a fact, if VB and its hooligan .Net relative fell of the face of the planet, in 6 months would they really be missed? Certainly not by me and the rest of my overworked team trying to tease out some kind of logic from VB legacy code. VB simply allows fools to write half arsed and badly thought out code, then fek off to the next role leaving the real programmers to fix it. BTW fixing it usually means hitting the delete key and starting again in another language.

# re: VB vs. C# Culture

Left by Adron at 6/1/2008 7:04 AM
Gravatar
Amazingly, after years. This topic has come up in a position where I am starting Monday. The biggest problem in my mind is that there is even a discussion. I don't even particularly want to contemplate using VB for my primary patterns work and architecture.

If I HAVE to use VB in Office Apps, I'd do so reluctantly. I just don't want to add any reason, even suggestively or theoretically, to incur bad culture or bad practice in development.

# re: VB vs. C# Culture

Left by Shiono at 9/15/2008 5:29 AM
Gravatar
VB community exist years before .NET was introduced. It was too late for Microsoft to retify VB way/culture/habit of programming. Futhermore, VB.NET was marketed as RAD tool, this mentally suggest people use it in the same way as classical VB6.

# re: VB vs. C# Culture

Left by VM at 11/25/2008 2:15 PM
Gravatar
Where did you study guys? In a community college? O'rigth then now we know why you pro-C#.

Obviously, the author and akin have a very remote idea about either or all of the following:
- Applied Linguistics,
- Language Comparative Analsys,
- Computer Science, Semantics of Languages
to start with...

They have no idea where all the evolution of programming has been going...

I feel sorry for you and those "stuck" with C#. They don't see real future.

Your comment:



 (will not be displayed)


 
 
 
 
 

Live Comment Preview:

 
«November»
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345