The VB Classic Debate

There’s certainly no shortage of information and opinions regarding Microsoft’s impending abandonment of the VB6/COM (a.k.a. VB Classic) software development environment. I’ve seen the arguments on both sides now, and I’ve had enough time to formulate my own opinion. I figure that coding Visual Basic for ten years and .NET for two years gives me some perspective on the matter.

The Microsoft Hype Machine

Microsoft has been pushing .NET relentlessly for something like five years now. In spite of the hype, the adoption rate for .NET has been very disappointing to Microsoft. It is gaining some momentum now, but the shift has been painful for businesses and developers alike.

Gartner, Inc. came up with a theory called "Hype Cycles" that describes how technology goes through five distinct phases of popularity. The five phases are: 1, the technology trigger; 2, the peak of inflated expectations; 3, the trough of disillusionment; 4, the slope of enlightenment; and 5, the plateau of productivity.

My guess is that.NET has finally reached phase 4, the slope of enlightenment. People are finally figuring out what parts of .NET make sense and what parts don’t. Developers finally understand how to use it effectively to solve business problems.

I believe that the inflated expectations and the trough of disillusionment phases were far longer than anyone anticipated. Microsoft did a wonderful job of delivering an incredibly rich framework, but actually putting it to work in the real world turned out to be far more difficult than anyone anticipated. Certain things are just way harder to do than they should be. The inevitable bugs in early releases didn’t help matters either.

In the meantime, most of us had real customers with real business problems and limited budgets. Someone has to pay for the steep learning curve in moving from VB Classic to VB.NET, and not very many businesses wanted to step up until they had a compelling reason to do so.

Unfortunately, no compelling reason exists. I feel that the real reason the adoption rate has been so slow is that .NET does not let you create applications that are significantly better than what you can achieve with VB Classic, at least from a functional standpoint. Unless you look at the address line, you generally can’t tell a .NET Web site from a classic ASP web site. As a VB developer, the only truly significant enhancement you get from moving to .NET is direct support for multiple threads. Few business applications take advantage of that capability, even when they should.

Yes, I know that .NET gives you a better environment than VB Classic to implement object-oriented designs and patterns, but in the end, what the customer sees is a bunch of dialogs that have the same basic look and features as any Windows application created since Windows 3.1.

Developers forget that, from the user’s perspective, all this excitement over new technology is mystifying. The applications that they work with on a daily basis have actually changed very little over the past ten years, in spite of the relentless operating system and application upgrades.

The Necessity of Progress

In the technology world, progress is essential. Hardware is eventually pushed to its limits by software, and software is eventually left behind by advances in hardware. Take the shift from 16-bit to 32-bit computing. That was a painful migration that took years. The installed base of computers and software was just a small fraction of what we have out there today. Going to 64-bit computing will be far more painful.

In the meantime, the black hats out there in cyberspace continually push both hardware and software security to its limits, which leads to additional needs for environmental change. Our poor little applications are riding on pretty rough seas. When you think about it, it’s astonishing that any application is able to stay afloat.

Although Microsoft will supposedly continue to support VB Classic into the next version of Windows, what about the version after that? Eventually, the language will be unsupportable as the OS continues to advance.

My feeling is that the language should continue to advance as well. VB Classic is still a perfectly usable development language. Obviously, there is a tremendous market for its continued evolution. I agree with some who’ve said that, if Microsoft doesn’t want to continue to support the syntax, they should sell it off to someone else who does. Killing off the language is just rude.

The Responsibility and Burden of an Installed Base

One of the most frustrating aspects of VB abandonment is the fact that Microsoft enjoyed the financial benefits of selling the most popular development environment of all time, yet fails to accept the responsibility that goes along with establishing such a huge installed base.

It is almost like they are thumbing their nose at the very developers who helped make their operating system the most popular in the world. These developers also helped open the door to enterprise computing (an area in which Microsoft had some difficulty gaining credibility).

When we ask, "What do we do with these millions of lines of code we’ve written?" the response seems to be "Sorry, that’s just too bad. Move to .NET." Well, thanks for nothing, Microsoft.

Compare that arrogant behavior with IBM, who still supports systems that haven’t been produced in a decade. Not that they are happy about that, but hey, they take their responsibility to their customers seriously. What a concept.

I’m not saying that Microsoft should continue to produce VB Classic in its current incarnation forever: I just expect a better migration path for developers who still have customers to support. Granted, the smart thing to do is to use .NET for all new projects and slowly move away from VB Classic. In most cases, there is no business justification for rewriting or migrating existing systems.

Besides, five or ten years from now, we’ll all be in the same boat again when Microsoft drops support for .NET in favor of the next generation tool!

The Eagerness of Technologists

Sometimes, we developers are our own worst enemy. We get anxious when we hear about the wonders of a new technology during the peak of inflated expectations because we worry that we will be left behind. If you don’t have experience with the latest buzz-words listed on your resume, you think you’ll never get another job.

Most businesses don’t understand what we do, so they cover up by focusing on meaningless certifications and impressive acronyms. Developers, in turn, pony up for the meaningless certifications and stuff our resume full of acronyms.

Having recently been an Internet Development Manager, I can tell you that there is a big disconnect between business expectations and industry reality. I’ve reviewed hundreds of resumes and spoken with dozens of candidates. Most of the resumes that resulted from the HR department’s acronym search used those acronyms as decoration. In most cases, the candidates had really just "dabbled" in the technology and hadn’t even written a complete application on their own time. In other words, they didn’t really have any experience using the technology.

This kind of behavior encourages companies like Microsoft to think they are winning our hearts. We must love the new technology because we are all interested in getting training and certifications. They don’t need to continue to support the prior technology because everyone wants to move forward. So, onward through the fog!

In reality, the development community is not acting out of excitement as much as fear.

The Futility of Conversion

I’ve talked with business owners who ask why we can’t just convert their VB applications to the .NET. Well, you can, sort of. Personally, I discourage that approach.

First of all, the conversion utilities can only take you so far. Even the companies who produce those tools say you can only expect about an 85% conversion rate. The rest has to be converted by hand.

After you’ve performed all this conversion work, you’ve gone from a decent VB Classic application to a crappy .NET application. I guess that’s worth it, if all you are concerned about is continued development in a supported environment. But I suspect you’ll have trouble finding developers who are interested in supporting your new monstrosity for long.

It’s Just a Tool

In the end, a programming language is just a tool. Even if VB.NET is inherently better than VB Classic from an object-oriented and deliverability perspective, that doesn’t mean VB Classic is no longer able to solve the same problems it always did. There’s still a bunch of C programmers out there (and the language continues to enjoy support), in spite of the fact that many "better" and advanced languages have come along since its heyday.

So come on Microsoft! Take responsibility for the mess you’ve created for yourself. If you don’t want to make money off the developers and businesses who continue to ignore the .NET hype and prefer to stick with VB Classic, then you should sell off the language to someone who does.