A director of information technology at an insurance company in the Midwest, who had more hair care products on his desk than you'd find at a Fantastic Sams, once fired me because one or two his permanent employees said I didn't know VB6. The reason they said I didn't know VB6 is because I told them that the Hungarian notation was ugly and I dared try to use VB6 like an object-oriented (OO) language.
I tell you this for a couple of reasons. First, I have used almost every flavor of BASIC since ROM BASIC, including BASICA, GW-BASIC, Quick Basic, Basic for DOS, Visual Basic for DOS, VBA, and so on. Secondly, having grown up with BASIC and having made a lot of money over the years working with BASIC, I remember two distinct events: Visual Basic for DOS and Visual Basic for Windows. Some people made money programming in PIC BASIC or BASIC for DOS (like me), but BASIC didn't come into its own until Alan Cooper had his epiphany and invented VB for DOS. Then, VB really took the world by storm with VB for Windows.
How do I know these things for sure? I was programming with other things when these VB events occurred, and VB made things dramatically easier.
Visual programming is Visual Basic's legacy. Object-oriented programming (OOP) is not VB's legacy.
What Have You Done for Me Lately?
The last time VB was really innovative was when it made IDL seem to be a ridiculously hard way to use COM. VB made COM easy, but that is not nearly as important as visual programming for DOS and Windows.
A huge division seems to exist in the VB community right now between people who love VB.NET because it is finally a full-fledged, object-oriented language and people who hate VB.NET (and refer to it as Visual Fred) because, well, it is now just another full-fledged object-oriented language. And, face it, many VB6 programmers are not computer science majors or formally trained software engineers, and they don't have the time, energy, or desire to master OOP.
Consequently, Microsoft has to endure a malaise from its VB6 customers that would get a Microsoftie fired in two seconds.
I have published two books on VB.NET. Today, few publishers are that interested in doing any more VB.NET books, because VB.NET isn't selling. It makes me wonder whether VB6 programmers are lazy, stupid, indifferent, mean-spirited, poor, old, retarded, illiterate, or what.
The answer, I think, is mostly none of the above.
Microsoft gave VB6 programmers something many of them never asked for, OOP, but VB's legacy is innovating software development by quantum leaps and bounds, not OOP. If you weren't programming 10 or more years ago, you probably don't remember a world of ANSI character-based screens or know what is at B800:0000 or where CGA memory is and why you needed to know, but VB for DOS elevated us to a level where we no longer needed to know how to draw boxes with ANSI escape characters or where CGA memory was. VB for Windows made it possible to put together a running Windows application in minutes—nothing fancy, but working nonetheless—instead of days. This is VB's legacy: significant innovation in the way we develop software, period.
Did Microsoft Drop the Ball?
If I ran the Microsoft's VB team, I'd ask what's next for VB. If they told me, "operator overloading," I'd respond with the infamous Trumpism: "You're fired!"
Don't misunderstand me. I love VB.NET. But, I also love OOP, C++, Java (a little), and Object Pascal. I love OOP languages, but VB was—and is not supposed to be—just more OOP noise in the world. VB is about shaking things up. Wondering whether Microsoft dropped the ball is a fair suspicion.
Where Do We Go from Here?
I suspect that, down in some armpit-like dungeon under Chairman Bill's office, VB builders are madly working on the newest of the new, the next huge leap in software development.
I don't think rectilinear, tri-chromatic, two-dimensional forms assembled painstakingly with reams of code is the end of the line. I think we are on the cusp of something new, and VB.NET is a necessary lily pad on the pond of innovation.
What will this new thing be? I don't know. (If I knew, I'd build it.) It might be three-dimensional forms. It might be multimedia-laden, shaped forms, rich in color, content, and dynamism. The newest of the new might be a blurring of the lines between Windows and Web programming. (Why should we care whether our applications are local or distributed?) Even better, it might be bigger, more complex building blocks that move us from an age of rapid application programming to rapid application building, based on application blocks, or instead of components and controls, something I'll call aspects for now. Perhaps the next quantum leap will be applications that generate additional code based on patterns of use, or maybe the next version of Visual Basic will be all of those things and more or something totally different.
I am just not sure what the next cool VB thing will be, but I smell it coming just like my dog senses an imminent rainstorm. I also think that Bill Gates is too smart not to be cooking up something in the dungeons of Redmond.
I really don't know if anyone sees beyond rectangles and buttons. Maybe no one at Microsoft has even asked yet. I do know one thing though: The next huge paradigm shift will be based on .NET. This shift may not originate at Microsoft—although it has a high probability of doing so—but Microsoft's implementation of the newest of the new will be based on .NET. And if you don't know .NET, you won't be ready.
What I Know For Sure
VB hasn't lost its way. It is just in between the last paradigm and the next one. VB.NET is that mid-way point between Visual Basic for Windows and what's coming. The battle is not about full-blown OOP (VB.NET) versus partial OOP (VB6) or a subjective debate about which is better. OOP is better than non-OOP. It's not about which is easier—already having mastered a disjointed API, set aside your ego, and invested in learning a highly organized framework—the framework is better. VB.NET is better. It is about being prepared for the next quantum leap in VB and in programming.
If you do not master OOP, when VB makes the next VB-like quantum jump, you will be left in the dust. History will relegate your skill set to the same ash heap where those who stopped at FoxPro, Quick Pascal, or RBase reside.
What will this quantum leap be? I don't quite see it yet, but I know it's coming just like a thunderstorm after a green Michigan sky. It's coming, and it will be big.
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. Look for his upcoming books UML DeMystified from McGraw-Hill/Osborne (Spring 2005) and Expert One-on-One Visual Studio 2005 from Wiley (Fall 2005). Paul is also the founder and chief architect for Software Conceptions, Inc, founded 1990. He is available to help design and build software worldwide. You may contact him for consulting opportunities or technology questions at firstname.lastname@example.org.
If you are interested in joining or sponsoring a .NET Users Group, check out www.glugnet.org.
Copyright © 2005 by Paul Kimmel. All Rights Reserved.