Is Visual Basic 6.0 going to take your career 6 feet under?
Visual Basic 6 is now two versions old with yet newer versions in beta. VB 6.0 was followed by Visual Basic .NET (2002) and then Visual Basic .NET 2003. Visual Basic 2005 is now in beta and due out next year. Just as Visual Basic 3.0 and other popular past versions have faded out of mainstream existence, so is the predicted future for VB 6.0.
With VB 6.0, however, there are some arguments being made as to why it should not pass into the graveyard as quickly as some of the even older versions. But, are these valid arguments or are those comfortable with the product simply grasping at excuses to prolong the standard evolution that follows all software products and languages?
Are people really sticking with Visual Basic 6? If so, what are the reasons for sticking with an old version? Will the .NET version of Visual Basic be forced upon those who would otherwise continue forward with the old version? Is this situation any different from virtually every other product that has established itself in the market? Are gains being lost by not going to the newer .NET versions, or are gains lost by going to a new version?
Is this really an issue?
Why isn't Visual Basic 3 still around?
Are People Sticking with Visual Basic 6.0?
A large percentage of people are still using Visual Basic 6.0. There are enough people still using VB 6 that Microsoft is still looking for ways to make the transition to .NET even easier for these programmers and their applications. Many Visual Basic discussion forums, including Jupitermedia's own VBForums, continue to have high traffic in the "classic" (version 6) VB sections, and numerous articles continue to be published. While the world is being inundated with .NET articles, VB 6 is not being completely forgotten.
Within the forums, you'll find that many developers have stated that they see no reason to upgrade. In fact, many give reasons on why they don't plan to upgrade and why they believe most shouldn't upgrade. It is worth looking at a number of these reasons for sticking with VB 6. It is also worth noting how accurate the reasons are.
VB .NET Is a Different Language
One of the most common complaints is that Visual Basic .NET is not an upgrade from VB 6, but rather it is an entirely new language. This is one of the most popular issues raised when VB 6 developers were asked why they were not upgrading to .NET.
Within the forums, Ice_531 stated "Different syntax means more time to learn it. Sure, some things are still the same or similar but really .NET is a completely different language."
Merri had similar comments when he stated, "In my opinion, VB.NET isn't a sequel to the Visual Basic series: The syntax is different; it isn't of the same version line. It isn't an improved version of VB; it is a completely new language. Microsoft probably just wants to make more people use their C#."
Yet another person, BruceG, stated it succinctly, ".NET does not build on the previous versions of VB." BruceG expanded this, however, to state, "Up until .NET, VB has to some degree retained the flavor of its great-grandfather, BASIC. I would say the 'flavor' of BASIC is that it is a very high-level language with simplified syntax—you could concentrate on the problem at hand and let the computer do the work." He continued with "Saw demo, it was not easy. Have to know this-dot-that-dot-the other thing, blah, blah, blah."
Is Visual Basic .NET a new language?
This is a rough question to answer clearly. The syntax is very similar in that an if statement is still an if and a foreach statement is still a foreach. Capitalization is not required and semicolons are not needed to end commands.
Overall, the basic syntax is similar; however, most people mix language and libraries into the same bucket. This is where .NET pulls away from the Visual Basic of the past. Additionally, some basic commands and features that have been grandfathered in Visual Basic editions did go missing in .NET. This includes very common commands such as OPEN for opening basic files. Others commands were included, such as CType.
The commands that may have been lost in VB 6 are replaced in VB .NET with a robust library of routines. These routines are the .NET Framework classes that go beyond what VB 6 included. Within the .NET Framework is a number of routines within the Microsoft.VisualBasic namespace that are specifically focused at the original VB commands. With this library as a part of a project, you have access to many of the original commands. For those commands that were lost, the .NET Framework provided other more robust solutions.
The .NET Framework is full of new classes and, thus, people are correct in that they have to be learned. The benefit of learning these classes, however, is that they are the exact same classes being used by other .NET languages, including C# and managed C++. Once you learn these classes, you will find that you can work with other .NET languages much easier.
Adding commands and classes is great, but losing them doesn't generally create goodwill. In VB .NET 2003, a lot of the functionality of VB was maintained. There were editor features that were critical to the language that were lost in the first .NET versions, including 2003. In VB 2005, the biggest return will be "edit & continue," which was a critical feature for the average VB developer. The loss of "edit & continue" alone caused a number of developers to go running from VB .NET. Microsoft, however, is listening to the developer community and is working to resolve many of these issues. This can be seen in some of the other features being added to the IDE that will help to make it the easiest development tool to use.
VB .NET Is Not Good for the Hobbyist!
".NET just isn't good for a hobbyist programmer."
This comment was made by Merri as a matter of fact. Others using Visual Basic 6 have made the same comment regarding VB .NET.
One of the values of Visual Basic is that it was quick and easy to create simple applications. You could drag and drop controls in a simple IDE and quickly create applications. Additionally, it was relatively easy to get entry-level versions at a low cost. This all added up to a product that hobbyists picked up and used.
There is the perception that VB .NET isn't for the hobbyists. There is a perception that it can no longer be easy. There are a number of reasons for these perceptions.
One reason for VB .NET appearing harder to use is that the IDE seems to be more complex. This is a result of having more features. It is possible, however, to customize the IDE back to something simpler. Additionally, Microsoft is releasing an Express version of Visual Basic 2005 that cuts out a lot of the items not needed by a hobbyist developer. This will greatly simplify working with VB.
In addition to releasing the Express editions, Microsoft has also increased the number of starter kits that are available. A starter kit is a full-fledged sample application that includes all of the source code. These applications can be cusomtomized and re-used. Existing starter kits do things ranging from a complete Web site to tracking a person's time. The starter kits provide a perfect starting point for a hobbyist who is primarily interested in simply building a solution and not as worried about writing every single line of code.
Another factor that complicates VB .NET has already been mentioned. The use of "edit & continue" is a huge factor in the perception of an easy-to-use product. This single item seems to be able to make the IDE friendly and responsive. According to those working with Microsoft, this is continually one of the biggest issues raised regarding VB .NET, and it is an issue that is finally being resolved in the 2005 version. In the current version, this feature was lost.
The need to compile and use a runtime also comes up in conversations as to why VB .NET is more complicated and less of a hobbyist tool. While the older VB also required a runtime, many people neglect to mention that. The facts are that the .NET Framework is needed for a VB .NET application to run. This is a much more substantial requirement than the runtime file needed in the past. In the short term, this is an issue; however, .NET is becoming a part of the operating system. Additionally, by Microsoft's count, there are over 100 million desktops with the .NET Framework on them already.
As machines upgrade to newer versions of Windows, it will be more likely that the .NET Framework will already be on the machine. The next version of Windows (Longhorn) has the .NET Framework built in. Additionally, many of the service pack disks that have been distributed also include the .NET Framework on them. The runtime will have to be installed before your .NET application will run. Granted, you can build an installation that pulls the runtime down from the Web or include it with your application when you distribute it. This is the same situation that was faced by earlier VB developers with its runtime. Granted, the required runtime files are substantially larger; however, Microsoft has included a "bootstrapper" that makes including the runtime install with your application easy.
Visual Basic .NET Programs Are Huge!
One of the other perceptions with VB .NET is that the resulting programs (EXEs) are huge. Steven made the comment, "there seems to be a lot more overhead when I toyed around with it on a friend's computer and just created a simple hello world app; the dern thing was like 300 Kbs!!!"
I have found that this is simply not the case. With VB .NET, much of the functionality is within the .NET Framework. All of the Framework functionality is provided in the runtime. As such, this functionality is not needed in the VB .NET file you create. As a quick example, and to test out Steven's comment, I wrote my version of a "hello world" test. It is a small program that copies text from a textbox into a label. The text is simply appended onto the existing in text in the label. The application has three buttons: one to clear the controls, one to do the append, and one to exit the program. Figure 1 shows the form for this application, which took less than five minutes to create, counting the time for the IDE to launch.
Figure 1: A simple VB .NET Application
This application—or one similar to it—is what I generally create the first time I open up a new tool or work with a new programming language. It is a little more than simply typing out "Hello World" on a form, but it provides the ability to see how easy it is to create a form, add controls and customization, and work with basic text.
I'd speculate that this small application is much more robust than the Hello World application mentioned by Steven. The resulting executable program that was created was 15 Kb. This was the version created with debug information. A release version should be even smaller. This is a far cry smaller than 300 Kb! In general, you will find that if your application relies upon Framework classes, its size will not be outrageous.
Visual Basic .NET Costs Too Much!
Another reason people believe that VB .NET is not for them is the cost. This issue also stands on its own.
"Strictly because of the cost." Was the reason dglienna gave when asked why he hadn't upgraded.
Szlamany echoed cost as well; however, not regarding the product itself; "Lots of dollars to develop—lots of time—switching to something new costs R&D dollars that no one wants to give us..." He goes on to say, "Cost of MS product has nothing to do with it—we have MSDN license to just about everything—bought action-pack two years ago. MS sends me CDs every month—we don't even have time to catalog them... It's all about internal cost to make the transition. And getting customers to want to do it as well."
mudfish also noted the secondary cost, "I do not think the people I work for want the expense of the training to shift us to .NET now! The longer they wait, the more it will cost in man-hours!"
The cost of going to .NET can be summed up into two areas. The first is the cost of the product and the second is the cost to train in order to understand and use the product.
Visual Basic .NET is free. More specifically, the compiler for VB .NET is a part of the .NET Framework, which is freely available. The development environment and all the tools that make VB visual are what cost. Whereas there are third-party tools that can be used to create VB applications, the Microsoft product is the primary one that people want. There are trial versions that last from 60 to 120 days; they can be obtained in books and other places. Additionally, there is a standard version that can be obtained for under $100. There are a variety of other versions as well. Most cost about the same as the original prices of their VB 6 counterparts.
With Visual Studio 2005, you can expect the inclusion of Visual Basic in as a part of the Standard Edition. Additionally, as mentioned earlier, Microsoft has announced—and has in beta—a Visual Basic 2005 Express Edition; it has a simplified interface. While Microsoft hasn't committed to pricing on the Express versions, it have said that it will be competitive. Because this is a SKU below the Standard edition, it could be assumed that it will be substantially lower in price than that version. Right now, you can get the beta of Visual Basic 2005 Express freely at http://lab.msdn.microsoft.com/express/.
While options for getting VB .NET cheaper are being announced, the other issue of cost centers on training. Learning takes time, and time is often considered a cost.
There are no great answers for getting around the cost of training; however, there are some good ones. The number of Webcasts and chats being done by Microsoft and other companies has increased dramatically in the past year. At the time this article is being written, Microsoft was even advertising on Developer.com that if you attended three free Webcasts, they would give you a copy of the standard edition of VB .NET! Microsoft is also distributing a resource kit and has provided numerous documents on upgrading. The Express Edition includes starter kits and "Getting Started" content. Add to this the targetted help functions, the smart tags, and the other features and the result should be that less training is needed to get up and coding with VB .NET.
Numerous sites have popped up with articles and other information to help you get started as well. Sites such as CodeGuru and Developer.com include sections for VB .NET. You can also find numerous discussion forums where questions can be asked.
Although articles, Webcasts, and discussions are not classroom training, they do provide free information to help you learn to use VB .NET. The cost of time is still there; however, it can already be seen that people with .NET experience are becoming more valuable than those without.
Visual Basic 6 Works and Can Do It All!
One of the most interesting and simple comments made when asking people why they are sticking with VB 6 came from Bruce Fox. Bruce simply stated, "Why? VB6 does everything I need."
Another comment was made by Pasvorto, "I don't see where I could provide any more functionality to my company. So, if there is no return, why pay the price to change?"
I've seen this argument made numerous times. The language or tool I am using works and I can do anything needed, so why change? I watched a manager make this argument for keeping a team of C programmers on a distributed program. C worked, the libraries had been created, and things were getting done. There was no need to switch to a GUI RAD tool. Fortunately, the switch was eventually made and a team of twenty developers was reduced to around a half dozen developers who produced more than the original team that was three times their size!
Initially, you will be less productive in a new environment; however, once you become familiar with the environment (such as the .NET Framework) and with the tools (such as the Visual Basic .NET IDE), you will quickly realize that there are a lot of features that will make you even more productive than you were before. The short time loss of productivity should be more than made up for in the long run. This becomes even truer within VB .NET 2005, where things such as Intellisense get supplemented with Intellitask and where features such as auto-correction are made available. For Web development, the addition of features such as Master pages help to focus your coding into the areas that are most important. Wizards and options help to eliminate many of the redundant tasks that you do.
It is worth mentioning one big difference between VB .NET and VB 6. VB .NET is an OOP tool. It was created to do Object-Oriented Programming. VB 6 and earlier were more focused on being RAD tools. The focus was on rapid development. This focus on the RAD came at the cost of some of the features that more advanced languages have. With VB .NET, the doors are open to tap into the same feature set that the advance-level languages have. This doesn't mean that the RAD has to be gone. In fact, Microsoft is focused on making VB .NET even more appropriate for rapid application development while maintaining its ability to tap into all the features of advanced languages and OOP.
Real Reasons to Go Visual Basic .NET
I often get calls from recruiters and companies looking for developers. I am asked for more recommendations for VB .NET developers than for VB developers. In fact, when asked for people using Microsoft developer technologies, it has become very rare to be asked for a person having no .NET development experience.
What is the point of stating this? Simply, if you are going to be looking for a new VB job in the future, chances are that your VB 6 credentials are not going to be enough to get you the job. Chances are, you are going to have to have .NET experience as well.
Where is DBase today? How many Paradox applications are being built? Where are all the requests for PowerBuilder developers? Have you met many Clipper developers lately? If you look really hard, you will find that there are still some systems out there using these languages and tools, but for the most part, they are yesterday's technologies. They were all great products. They were all the best in their class at one point. Those who knew the tools would tell you that they did everything that was needed at the time. Those who knew the tool are most likely programming in a different language or tool today.
If you are doing professional-level development with VB, chances are that within a few more years, there will be little new development for you to do if you don't move to .NET or something else. Visual Basic 6 is an older version. Microsoft has a support plan in place, but with time that support will cost and with even more time it will go away.
Although VB 6 does do a lot, VB .NET is being positioned to be able to do more. VB .NET includes access to the complete .NET Framework. This is thousands of classes and methods for getting things done. Additionally, VB .NET can tap into and use any libraries or classes created with any other .NET language. This means that VB .NET programmers have access to all the routines created by C# and managed C++ developers. While access to these was available before, it was not as easy.
What Does Microsoft Say?
Microsoft obviously wants everyone to upgrade for a variety of reasons. I feel comfortable in saying that they also understand that you are not going to upgrade simply because they would like you to.
.NET offers a lot of promise and VB .NET does as well. As I mentioned previously, the Visual Basic team at Microsoft is working to make sure VB 2005 has many of the features that VB 6 developers wanted. In many ways, those promises are starting to materialize.
Microsoft is not simply abandoning VB for C#; however, it did make the hard decision in regard to backward compatibility. S. Somaseger, corporate vice president of the Developer Division at Microsoft Corporation, states it clearly in his blog at http://blogs.msdn.com/somasegar/archive/2004/08/01/204540.aspx (referring to the Visual Basic language):
"We're 120% committed to the language and the product not just today but for a long, long, long time to come, as we have been in the last decade now. I know that when we moved from VB6 to VB.NET, we broke compatibility and that is a sore point with some of our developer customers. It was a huge decision that we did not take lightly at that time. The trade-off clearly was making a leapfrog jump in innovation as we moved to the .NET platform versus ensuring full compatibility."
In a conversation with Craig Symonds, General Manager of the Visual Studio Tools, he stated, "Forrester Research recently reported that 56% of enterprises are using the .NET Framework for their development (see http://www.microsoft.com/forrester). Clearly, we've seen a significant amount of momentum since we launched three years ago." Craig went on to say," A key goal for 2005 is to add or fix key adoption blockers for those folks that haven't made the move to .NET as of yet."
Knowing that Microsoft is interested in addressing the blocking factors for migrating to VB .NET, it is worth looking to see what is coming next. Visual Basic 2005 .NET is in beta. Robert Green, Program Manager for Visual Basic at Microsoft, stated the following when asked what the best features of VB 2005 would be:
"Drag and drop data binding to local data, server-based data, Web services, and business objects. Code snippets. My, which is a speed dial into the Framework, (for example, My.Computer.Network.IsAvailable). Language features such as generics and operator overloading. Strongly typed resources and settings, (as in Form1.BackgroundImage = My.Resources.CoolBackground, where CoolBackground is actually coolbackground.jpg). Edit and continue. Auto-correction, where the background compiler detects errors in your code and suggests ways to fix the error, and then automatically makes the correction. Those are some of my favorites."
Robert points out a number of features that will make VB .NET go beyond the RAD tool it was in version 6.
In the most recent conversation I had with Craig Symonds, he echoed many of the features that Robert mentioned. Additionally, Craig stated that Microsoft is definitely focused on taking steps to making it easier for the VB 6 developer to learn VB 2005 .NET quicker. He stated that a ton of time is being spent on VB 2005 with the focus on making things simpler. This simplification should help to make VB the RAD tool it has been in the past. Craig stated that this focus for simplifying things would continue into the future for VB.
Craig also mentioned that there is a perception that VB .NET requires the "ripping and replacing" of VB 6 applications. He stated that this was one of the perceptions along with many of the items mentioned earlier in this article that are causing people to avoid .NET. There is also the perception that C# has taken over VB. Although C# is gaining a ton of momentum, VB is still very high in usage. Additionally, VB .NET does not require the re-writing of older VB applications. The old and the new can work together.
Support for Craig's comments about C# versus VB can be found in the TIOBE numbers published on Developer.com. The numbers for Visual Basic are 500% greater than for C#. Even taking into account the additional items tracked in the Visual Basic category, it should still land substantially higher on the chart. The TIOBE rankings show current interest in a topic. (See http://www.developer.com/java/other/article.php/3417831.)
When Should Visual Basic 6.0 Be Killed?
Visual Basic 6 is going to be around for quite a while. VB .NET is, however, taking over and the reasons for upgrading are becoming more compelling with each new version. With the release of 2005, many of the remaining issues about upgrading are going to be addressed—including edit & continue.
While VB 6 may be around for a long time, it can already be seen that employers looking for VB experience are looking for .NET people more so than those without. For those doing professional development, the need for VB 6 in new development should be going away sooner rather than later. As .NET becomes a standard within Windows systems, so will development using .NET.
Although VB .NET is only three years old, it is entering its third version. The magic at Microsoft seems to peak in the third version of a product. Just think about VB 3 and Windows 3.0! The third version of VB .NET will be VB 2005. It is in beta now and will be released next year.
Although there are a number of reasons to stick with VB 6, Microsoft is working to tilt the scale to VB .NET. Microsoft made a tough decision to avoid hurting VB .NET with backward compatibility. Statistics are already starting to show that .NET development is becoming more predominant.
The promise of using VB .NET is the ability to tap into the full .NET Framework and to make Visual Basic a first class programming language. As Craig Symonds stated, "[VB .NET] removes the glass ceiling in 6.0."
If you are a professional developer doing VB 6.0 development, the days of developing new systems with your tool of choice are numbered. It may be time to start looking at VB .NET even if you have to do it on your own. Otherwise, you may be working with the guys who didn't want to upgrade from VB 3.
After all, Visual Basic 3 could do almost everything in its day, too!
Developer.com, CodeGuru, and DevX are just a few sites that have numerous articles on Visual Basic .NET. Additionally, VBForums, CodeGuru.com, and DevX offer discussions on Visual Basic .Net. For code samples, you can check out FreeVBCode and CodeGuru. Microsoft also offers numerous Webcasts and chats on VB .NET.
# # #