I was a participant in a discussion in Redmond recently. The nature of the discussion was basically that C# gets more attention, C# gets more features, and the result is that VB is unfairly cast as a second class language. The tone, to be quite honest, was whining. Somehow, the implication was that Microsoft could and should fix the prevailing perception that VB.NET is a second class citizen. I doubt Microsoft alone can change this perception, and I doubt that it is entirely Microsoft's problem to fix.
VB.NET is a first rate language. It can do anything that C# or just about any other language can do, at least in the arena it was designed to play in. From my observation post, it looks a little like some of the VB developers are holding on to the old VB6 ways of doing things and the C# programmers are not. There is no old C# way. This fact alone gives C# programmers the upper hand.
If VB.NET developers are using a high frequency and density of design patterns and refactoring in their VB implementations, the results will be as sound as similarly styled implementations in C#. If VB.NET developers are leveraging new productivity features of .NET, such as generics or LINQ, VB.NET developers will be as productive as C# developers. Can VB beat C# in productivity based on a RAD design environment like it did with C++? No; C# has the same design time capabilities. Can VB.NET surpass C# in any markedly demonstrable way? Probably not. C# and VB.NET, for better or worse, are basically fraternal twins, with VB's re-birth on the .NET framework, and consequently the circumstances of their birth going forward make them co-equals. The only prevailing problem is that VB has the ghost and baggage of a prior incarnation.
We all know that .NET is language agnostic. This means that a project can be done in C# or VB.NET or a single application can mix and match. VB and C# can use any part of the .NET framework, and the two languages share a high degree of the same language constructs.
The only requirement is that one use the same language within the same assembly.
In reality, VB.NET sometimes gets little features that C# doesn't get, like the My feature and literal XML (and it was VB.NET, not C#, that was mentioned on an episode of CSI: recently). So, on the media front perhaps and technology front for certain someone is looking out for VB. The only honest question to ask is whether or not the community is promoting VB.NET and new innovations. Are you writing articles and blogs? Are you buying books and learning new techniques? Are you attending conferences or user group meetings? Are you evangelizing VB within your organizations and communities? For VB to realize its new birthright, the answer must be yes.
Some of you go home at 5PM and don't spend a minute thinking about your work life. I respect your right to do that and in some ways it's probably a healthy way to balance life. Perhaps some of you folks don't want to invest in new aspects of .NET because it may mean personal sacrifice. Again, I respect your right to choose, but in this fluid economy I suspect it is a gamble with the poor roll of the dice meaning diminished earning capacity or unemployment. Some of you, perhaps, are closer to the end of your careers than the beginning and may be of the mindset that learning new tricks is too hard. Because I have been working for the better part of thirty years, I can see how you might feel. This position is probably very risky too. Unfortunately, there is some age discrimination in every business, including ours. A hedge against late-career problems is to be an invaluable contributor and thought leader. Studies have shown that constantly learning new things is physically and mentally beneficial (which will probably help you enjoy your golden years). And, there are those, like me, who having mastered a skill, such as staying in their comfort zone of master rather than apprentice. I recognized this potential early on and so learn new things that are completely out of my conform zone, like learning to fly, playing guitar, and yoga. The benefit has been a richer, humbler<g>, more enjoyable life, and a reminder that there are an almost infinite variety of things that I know little or nothing about. These things are reminders that I enjoy learning about programming languages and am pretty good at that.
VB.NET in reality is a tool, a programming language, one of many. Being mono-linguistic is probably not a sustainable hedge against a dynamic and ever-changing business climate. However, if the VB community—not the language all by itself, but the community—shine through its collective and innovative contributions, VB.NET will move up the food chain. But, no one can make you a second class citizen just by saying so and certainly not because of where you were born or the circumstances there under and certainly not by the programming language you choose to prefer. That's silly.
About the Author
Paul Kimmel is the VB Today columnist for www.codeguru.com and has written several books on object-oriented programming and .NET. Check out his upcoming book LINQ Unleashed for C# due in July 2008. Paul Kimmel is an Application Architect for EDS. You may contact him for technology questions at firstname.lastname@example.org.
Lansing is having a free Day of .NET training at Lansing Community College on June 21st. Check out the web site for details. The group likes to think of it as a poor man's TechEd (because it's free), but the content will be excellent.
Copyright © 2008 by Paul T. Kimmel. All Rights Reserved.