Some history:For the last six months I have been employed at a small firm with just three programmers, my employer among them. The firm maintains two programs written in VB6. I am asssigned as the lead programmer to one of these. In the last six months I did some maintenance and bug hunting, but created some new functionality too. I had an interview last december, which was favorable, and my contract was prolonged. I am very happy with this course of events as I only obtained a .Net certification a year ago and have no other qualifications (in the field of coding, that is).

It is my strong opinion that, while migration of the existing program to .Net is advisable, it is paramount that from now on the new functionality should be written in VB.Net class libraries. After some study I found out how simple it is to integrate .Net class libraries into the VB6 development environment and how easy it is to add their functionality to existing installations by using application manifests.

So, I have decided that now is the moment to roll up my sleeves and try and convince my employer that he should let me develop new code in VB.Net, using VB6 for maintenance only. We get along quite well, but I think I am going to need all the ammunition I can get to convince him. Any arguments, preferably backed up up ones, are very welcome, even arguments to dissuade me ;-)

Actually, VB6 will not be completely dead for another 2 years: the runtime will be supported until Server 2008 r2's end of life. There are tons of people using it, only that most of them are probably not around on StackOverflow. My boss is one of them, too. His largest concern is that .NET code is easy to decompile.
–
Felix DombekJan 19 '11 at 20:21

VB6 is not the runtime. He's talking about writing and debugging code with an unsupported product.
–
John SaundersJan 30 '11 at 2:39

9 Answers
9

VB6 apps will not work when Win8 (or whatever it gets called) comes out. The company I just left got burned when Vista came out and the 16-bit apps stopped working because the VBXs could not be made to run on Vista. Microsoft decided to take out the native libraries that handle accessing Access databases. They can easily do that with the VB6 runtime library.

As a form of risk management, your boss should be considering updating the technology. Slowly moving piece-by-piece to .NET would make things much less stressful if MS decides to kill off the VB6 runtime. When new operating systems are in beta (usually called CTP), I strongly recommend getting a copy to install on a virtual to test your existing software. Vista was a shock to us, and that company didn't have a replacement for the 16-bit code for about a year after Vista came out - and we only knew it was a problem when customers starting calling to say it didn't work.

edit: while watching a number of webcasts on Microsoft Events, and in particular this one, I've come across the statement by more than one presenter that the VB6 runtimes will not be distributed in future operating systems.

Try slipping the VB6 installation cd in a Windows 7 64-bit system, and show the presented dialogue to the boss.

It basically says that this software is known not to work well with Windows, and it not recommended to be used. If that is not a strong indication that VB6 should not be used for new development, I do not know what would be.

Well, I won the argument. I think I convinced the programmer more than the moneymaker in him by showing both a piece of .Net code that was called from VB6, how easy it was to code against this .dll in VB6 and finally by sending him the link to this article. That convinced him that we should gradually migrate towards .Net by using .Net .dll's

While I totally agree that using .NET is a good thing, you did ask for both positive and negative reasons. You should be aware of the negative, if only because your boss may confront you with some of them and you need to be prepared.

The biggest negative I can think of is what if you are the only one there who learns .NET and then something happens to you. Right now everyone knows VB 6 and can maintain each others programs. (Perhaps you need to suggest that you could do a small "test" project in VB.Net and help everyone understand it and become comfortable with VB.Net. Hopefully that way everyone will see the benefits and back you).

+1 for managers only caring about ROI when it comes to making change
–
Gary RoweJan 19 '11 at 18:30

The manager is at the same time one of the programmers (mentioned in the question text), which is why I think the ROI lingo won't work here...
–
JasJan 19 '11 at 19:06

2

@Jas: He is the employer, he is the payer, he will consider ROI. Don't you think? IMHO, ROI is still strongly valid, however I must adapt a couple of points to reflect your suggestion.
–
user2567Jan 19 '11 at 19:10

@Pierre - Certainly he will consider ROI, but being a programmer he won't look at it from the standard MBA-type angle of view. As a matter of fact, there is a far clearer and more obvious ROI overview from a technical point of view : The simpler the technology to use, the less work is required, therefore more bang for the buck, or ROI if you like.
–
JasJan 19 '11 at 19:45

@Jas: I think a boss+programmer not being able to understand the basics or ROI is a cliché.
–
user2567Jan 19 '11 at 21:20

VB6's native language is COM. .NET Libraries can be exposed as COM objects. You've already made the decision to move to .NET Writing new functionality in .NET will allow you get a toehold when you make the effort to move the rest of the app over.

You summed it up your self "I think I am going to need all the ammunition" as you prepare to convince your employer. Ever wondered why good answers which are short don't get as many up votes on this forum. :-) People like detail so make sure you prepare well before you start the battle. IMO it should be easy to convince if your employer understands the technicalities of things.

@Gary - +1 on your comment for making me learn a new English word (pithy). :D
–
JasJan 19 '11 at 18:57

1

I disagree somewhat. This might be nice if you talked about it with your boss first, or if you show him one of your own projects if he's interested. But only showing him VB.NET code will not persuade anyone. That would be like, "You use Java? Look at my Ruby code here. Don't you think Ruby will solve ALL your problems much better?" This just does not work.
–
Felix DombekJan 19 '11 at 20:26

1

+1 It is easier to ask for forgiveness than permission.
–
realworldcoderJan 20 '11 at 4:00