I should start with a disclaimer. I have no love for VB. I'm a C# developer, but more to the point, I'm a C developer. I grew up on C-based or at least C-styled languages. That perhaps makes me biased against a language like VB, in the first place. That said, there's very good and unbiased reasons to move on from VB.
Microsoft's VB Strategy
Microsoft recently released a blog post detailing their strategies for the core .NET languages: C#, VB, and F#. The VB team followed that up with a post of their own, specific to VB. While both maintain a commitment to VB in the future, there are words that should give current and potential VB developers pause:
“We will focus innovation on the core scenarios and domains where VB is popular.”
The .NET Language Strategy
“But with regard to the cloud and mobile, development beyond Visual Studio on Windows and for non-Windows platforms, and bleeding edge technologies we are leading with C#.”
Digging Deeper into the Visual Basic Language Strategy
If you're interested in VB development, both posts are worth a full read, but the long and short is this: VB will be confined to Windows (WinForms) and Web Form development on Windows. That may not seem altogether discouraging on first glance, until you take into account Microsoft's overall strategy. Mobile is where it's at, and Microsoft's mobile platform has struggled to gain ground. Their acquisition of Xamarin is letting them extend their ecosystem into iOS and Android, where both the developers and the userbase exists. As reported by StatCounter earlier this month, Android has overtaken Windows (the desktop OS) in terms of Internet usage, for the first time. The Cloud is also big on Microsoft's mind, mostly spurred by increased mobile usage. Their Azure platform has become a headline component of their ecosystem, and now enjoys deep integration into Visual Studio.
A language that is only for desktops or a web platform that is all but moth-balled (Web Forms), is frankly doomed. The trends we're seeing in moving away from the traditional desktop are only going to accelerate with time, and going forward with these new technologies and experiences is going to require C# or F#. VB developers need not apply.
Let's compare these two opening descriptions from Microsoft's .NET Language Strategy post.
C# is used by millions of people. As one data point, this year’s Stack Overflow developer survey shows C# as one of the most popular programming languages, [...] it is beyond doubt that C# is among the most widespread programming languages on the planet. The diversity of target scenarios is staggering, ranging across games in Unity, mobile apps in Xamarin, web apps in ASP.NET, business applications on Windows, .NET Core microservices on Linux in Azure and AWS, and so much more.
Visual Basic is used by hundreds of thousands of people. Most are using WinForms to build business applications in Windows, and a few are building websites, overwhelmingly using ASP.NET Web Forms. A majority are also C# users. For many this may simply be because of language requirements of different projects they work on. However, outside of VB’s core scenarios many undoubtedly switch to C# even when VB is supported: The ecosystem, samples and community are often richer and more abundant in C#.
Particularly telling is the contrast between used by millions vs. used by hundreds of thousands. Hundreds of thousands may sound like a lot, but in terms of a major programming language, that's a rather paltry usage statistic. The majority of .NET developers are C# developers, and their numbers are only growing. Whereas, the ranks of VB developers is shrinking, mostly due to attrition to C#.
That means opportunities for VB developers going forward will become niche if not non-existent. Consider the fate of COBOL. There are still COBOL developers and companies looking to hire them, but those opportunities are becoming more and more rare. It's a snake eating it's own tail. As more developers move on to other languages, more companies are forced to abandon their outdated applications, which further decreases demand for developers, causing more developers to move on to other languages. The one particularly troubling aspect for VB developers here, though, is that VB does not enjoy the exclusivity that COBOL does in its applications. If the application was built in COBOL, you must update and extend it in COBOL. However, if the application was built in VB, it can be updated or extended in any .NET language. In other words, VB developers are not a prerequisite for working with VB applications. If that doesn't scare the pants off of you as a VB developer, I'm not sure what will.
Closely related is the idea of community. When opportunity becomes scarce the community dwindles as well. Do any programming-related Google search, and your top result will almost assuredly be from Stack Overflow. Stack Overflow has quickly become the pre-eminent developer community, providing help and assistance for millions of developers on a daily basis. That makes sentences like the following from the .NET Language Strategy post so troubling:
The Stack Overflow survey is not kind to VB, which tops the list of languages whose users would rather use another language in the future.
Ouch. While the apologia that follows is an admirable attempt to diminish the sting of that statement, the simple fact remains that Stack Overflow has a very small and largely inactive VB developer presence. As a frequent lurker on Stack Overflow, I can attest to the plight of VB developers who come with questions. The most typical responses are mere guidance without code samples, as these are most often from people with no experience at all with VB, who still want to try to help. The next largest group, which I consider myself a part of, has a passing familiarity with VB and will attempt to help with actual VB code, as possible. However, I can personally attest that in these scenarios the code samples are often very minimal, and if the question cannot be successfully answered with only a minimal code sample, it is usually not answered at all. Finally, if you're very lucky and all the stars align just right, you might actually get someone who is very familiar with VB who will provide a very detailed and code-rich answer. People do win the lottery, after all.
The tag statistics tell it all. At the time of this writing, almost 2 out of every 3 questions asked with the "vb.net" or related tags in the last 30 days have gone unanswered. Almost 1 out of every 3 questions in those tags ever asked has gone unanswered. Contrast that with C#, where over half are answered within 30 days and only 1 out of 4 goes unanswered forever. That may not seem like much of a differences, but percentages and ratios only tell half the story. C#-related tags have generated at least 10 times more activity than those related to VB. The picture is clear; although VB is often marketed as a language for "beginners", the community necessary for new developers to grow just isn't there.
While Microsoft seems to want to beat around the bush, placating VB developers with assurances that they remain committed to keeping VB a first-class .NET language, the simple truth is that their actions betray their assertions. Every headline technology Microsoft is actively pushing gives no quarter to VB. Even if Microsoft continues to actively develop VB, it's still all but a dead language, as it's been and continues to be relegated to platforms and technologies, which are themselves dying off. You can make the argument that the desktop computer may never become a thing of the past, but Microsoft's strategy there - a single OS for desktop and mobile - ensures that the time of creating applications that only work on the desktop is long gone. Developers are abandoning VB, en masse, and that makes it only more difficult to continue on as a VB developer. The lack of opportunities and community to provide support and assistance will push ever more developers out of the VB camp. Long and short, far from being a great language for the beginner, VB is an albatross. Spending your time and energy learning it is all but a waste of time, presenting virtually no long-term ROI. If you're truly a beginning developer, C# is where you should focus your energy, or even F#. While the applicability of F# is more narrow than C#, it is very much in demand. What you shouldn't do is give VB even a glance.