Confessions of a Visual Basic programmer I

Short URL:


In my first post here at Free Software Magazine, I mentioned that I actually like using Microsoft Windows. People seemed to let this go or find it not worth commenting on, maybe because my goal is to move away from it. Not that I expected rabid opposition. Not at all. GNU/Linux users are well-known for being quite mild and reserved in their opinions. If we must go back to my drug use analogy, it could also be that readers here were supportive of my desire to seek treatment and rehabilitation and didn't see the need to condemn me for past transgressions. (But really now, the drug metaphor has to go.)

Perhaps just as egregious a violation of the principles of free software has been my use of Visual Basic over the past ten years. And similarly, I'm going to tell you that I like programming in Visual Basic. (Version 6, specifically. Not VB.NET/Visual Fred.)

Really? Visual Basic?!

The way I see it, there are two issues here. One is the (lack of) freedom of the language and that's mainly what I want to talk about. Two is the language itself; the contempt that people have for Basic. Let's briefly address the shame and scorn associated with using the "wrong" language before moving on to the topic of freedom and sharing.

Most people have strong opinions about programming languages, of course. While I think it's good to be aware of the merits and shortcomings of different languages, most of the debate is extremely tiresome partisan bickering. Why is that? Does John's use of Ruby infringe on Sally's use of Python? Is it because Billy Bob never wants to support another Perl program and would like to see it die a painful and unmourned death? Is it the desire for validation, that we want to be acknowledged for using the best darn language there is?

I know it's not always like that. I didn't say all of the debate. Just most. Some debates are more civil and pragmatic about the merits of different languages for different purposes. But try introducing Visual Basic in to the discussion and you're likely to experience some caustic ridicule and disdain from self-satisfied hotshot programmers.

I have to confess: I care about that kind of stuff more than I should. Am I being overly sensitive? Maybe. On the one hand, I don't care if Bobby wants to put down VB and VB programmers. On the other, yes, I'd like to be taken seriously as a programmer, even if the language I'm most proficient in is the much derided Visual Basic. It's kind of a personal problem if I care what other people think, I guess.

One more time: Visual Basic?

Yes. Visual Basic. I learned it in school and on my own before taking an internship with a company to develop a VB program along with another intern. It was part of a large suite of applications used by the company; client/server programs that talked to an Oracle database. I went on to work at this company and with this suite of applications for over three years, and it gave me the perspective of knowing that VB could be used for real work, so it was hard to take seriously the people that dismissed it out of hand. I knew that VB was a tool that added value to business. (I suppose now I should hang my head at being a corporate applications developer, which is also way uncool. It's just so darn hard to fit in with the "in" crowd.)

I had the opportunity to learn Java and move in to a new job where I used that instead of VB, but I continued to use VB for little utilities that helped me and my new team do our job. And I've used VB for all kinds of personal applications. It's enjoyable to program in. It is so easy to put together a GUI to do some odd job. It can be made to do some pretty cool things, I think.

Another criticism I often hear is that VB is too easy--that it lets any idiot think they can be a programmer. This is silly. We shouldn't complain about lower barriers to entry. "Easier" languages and enabling-tools let so many more good people with good ideas play. People that might not learn C can still do some valuable work with a language like VB.

Yet still, I often feel like a half-programmer. As if it's not good enough. As if it's something to be ashamed of. Setting aside the question of freedom, which we'll take up next week, why should anyone feel down about the programming tool they use? With VB and the applications I've created for my employer and myself, I've had the opportunity to engage my mind with logical thinking and revel in the joy of solving problems. I've been thrilled to create programs that solved problems for myself and others. That made things better. Isn't that why anyone programs? VB lets you do these things!

I'd end with a plea to be kind to all those beaten-down VB programmers out there and allow them to pursue their craft with dignity, but I can't fully support that sentiment. (Other than that you should be kind.) Because of course, VB is totally unsuitable for use in a free society. Still, don't be too harsh on VB programmers because you think they are serfs using an uncool, toy programming language, but rather have pity on them because they are sharecroppers who could instead own the land they farm on.

Now playing across town

Please visit my Moving to Freedom web site at where there is currently some buildup to a free culture publication event.


Reusable with this attribution, and please note if modifications are made: Copyright © Scott Carpenter, 2006. Originally published in Free Software Magazine. Creative Commons Attribution-ShareAlike License (CC-BY-SA-2.5).



Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

And I thought I had something to defend in liking C#/.NET.

Perhaps it's like a musical instrument?

One person's box with stretched catgut is another's Stradivarious.

If you master a language you can produce masterpieces.

Certain instruments may not be able to produce all the notes or have the same qualities, but each to their own eh?

Whatever works best for you. Don't eat yourself up over it.

And yes, I have produced a significant piece of software in Basic (a music score editor called Maestro, for the Acorn Archimedes).

Scott Carpenter's picture

Thanks. Obviously I think about it, but it doesn't eat me up that much. Really! Who's being defensive?! I'm not being defensive! :-)

I like your way of looking at it, except I think VB isn't a good choice for me no matter how much I enjoy programming in it. But that's for next week.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

Of all the languages I've used, I've always felt that Visual Basic was the one that let me think most about the problem at hand and least about the mechanics of the language. And isn't that what "high-level" languages were supposed to be all about? Great article. C. Wells /Houston

Scott Carpenter's picture

I'm glad you enjoyed it. I look back now and see I didn't talk much about what it is I like so much about it. I do like that it saves me from thinking about a lot of details. I think low-level programming would be fun if I tried it, but over time I think we'll want to let machines do more and more of the work for us, and people will have to accept that not everyone is going to be a hardcore systems programmer.

Terry Hancock's picture

The drug, or rather "addiction" analogy is fairly apt. I find that the most vehemently anti-Windows GNU/Linux users are usually the ones who've just switched.

After a few years, I find that it isn't anything specific about Windows that I don't like, it's really just that it's now become a completely alien system that I know nothing about. I departed in order to avoid using Windows 95 at home, and Windows 98 SE is the most recent version I have any experience with. All this "XP" and "ME" and "2000" and what-not is just a complete mystery to me.

I find this really shocks a lot of people, who seem to assume that most GNU/Linux users are experts who tinker on Linux and get really jazzed about it, but do all their "real work" on Windows. And indeed, I have met people like that. But I honestly run everything (work and play) on Debian GNU/Linux myself.

Because I do that, I think I'm probably more honest in criticism Linux applications. It's one thing to use a package long enough to write a review, but it's quite something else to rely on it day-in and day-out. After a while, quirks start to get on your nerves. So there are some packages I complain about. OTOH, there are others like LyX and gVim that I find totally rock-solid, which is why I recommend them.

Scott Carpenter's picture

I'd want to keep up my Windows expertise, but it would be nice to be able to just let it go completely if you could. (My current job will keep me in it.)

I'd like to be able to use my Windows experience to write some decent comparisons between comparable apps. I suspect in some areas that I find GNU/Linux lacking, it will be because I'm ignorant of a better way to do it, but I also expect some things to just not work as well if considered honestly, and hopefully we can continue to borrow/steal the good ideas. I see nothing wrong with shamelessly copying from proprietary software where there are good ideas to be had.

Terry Hancock's picture

BASIC was my first programming language. It was "Color BASIC" for the TRS-80 "Color Computer", which is, of course, a much older version. I learned a few later variations, like QBASIC, but I did quite a lot with it.

It's difficult to write serious programs in, with good engineering practices, though, because BASIC doesn't provide a lot of native support for them. Of course, I went on to program in FORTRAN which has many of the same problems (however FORTRAN 77 and later, do support functions and procedures which can be put to good effect by anybody with a little self-discipline), so my experience with learning to make sense out of the chaos that is BASIC was probably useful.

Still, it's a big relief to work in a language that has more built-in support for programming paradigms: "structured", "object-oriented", "functional", etc. Today I use Python for almost everything. It's nearly as easy as BASIC to learn, and yet it has much more built-in support, powerful libraries, and it's clear and easy to read. It does have a few quirks: historical accidents of design that have led to some awkward "idioms", but the overall picture is of simple, intuitive design.

The partisan-ness you describe is very up-front for me. I like Python because *I* find it easy to understand and use, so naturally I like to see other (open source) programs written in it, because their source becomes an asset to me that I can build on if I want. By contrast, trying to build a Python program on top of a Perl package is next to impossible, and often not worth the trouble. I've generally had very bad experiences with mixed-language projects.

People sometimes question why there needs to be so many different applications written in different languages for GNU/Linux (e.g. if Inkscape is a great vector-graphics app (written in C++), why do we need Skencil (written in Python)?). The truth is that, to a programmer, especially an amateur programmer who only really knows one language, the presence of a useful app written in your language of choice is a boon. It gives you a kind of power you don't get from another package, even if they are both equally good from a pure user standpoint.

Of course, multi-language plugin and extension architectures go a long way to erasing that kind of language chauvinism. Inkscape is growing a very nice Python scripting and extension capability, as I understand it (still needs work: what they're doing is defining an SVG DOM for programming interfaces).

Scott Carpenter's picture

I think more common languages would be good for the reason you mention -- that you can find more apps, sample code, and help for what you're trying to do. That's why I like WordPress as a blogging platform -- there are a bazillion plugins and web pages with help for what you're trying to do.

I'm not sure what I'll get in to as I start programming in Linux more. Java is an obvious possibility for me, since I'm already using it. But I haven't done much GUI with it, and I'm not excited by the prospect of that although I hear it's getting more manageable with Eclipse. I've been superficially attracted to Perl in the past, but may give Python a try also. Partly because it would be a new and exciting dalliance, versus Perl where I've already experienced some of its tawdry habits :-)

I also think diversity is a good idea -- different tools for different jobs if necessary, even though I don't care for the sniping that goes on along with this, when languages compete for similar jobs.

jonnyb13's picture
Submitted by jonnyb13 on

First off, I too enjoy using Windows. Though I use Linux now. Anyway, I find Visual Basic as a good starting tool for beginner programmers. Though it may have an awkward reputation and language for a lot of people. Still, you can't deny its ease of use. Sucks as it may, it still is a versatile steeping stone for everyone.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

Programmers who deride another programmer about languages are simply technicians that are a bit ignorant. Engineers are on a somewhat higher level and usually worry more about good design than language details. The senior technical and business people worry about getting things done that make money. In the end, we're judged by what was done, not how it was done.

That's why the petty attitudes about languages are as silly as the religious arguments over which editor is better.

My software mentor pounded into us the idea that we should take all languages seriously, as there are always niches where each is the best solution. This is really good advice. If you don't believe it, then you haven't learned enough languages. Go out and learn 4 or 5 more. Or learn the ones you have learned better.

I won't even bother listing my three favorite languages. I've used VB and it is a capable tool, although I had problems with deployment of a commercial program I wrote. I do have to say that I loved QuickBasic 4.5, which was a superb tool within its DOS limitations. I almost liked it as much as HP's Rocky Mountain Basic of the late 70's and early 80's which were real pleasures to use (I still have my HP 9817 computer).

Author information

Scott Carpenter's picture


Scott Carpenter has been lurking around the fringe of the free software movement since 1998 and in 2006 started a more concentrated effort to "move to freedom." (Chronicled at the Moving to Freedom blog:

He has worked as a professional software developer/analyst since 1997, currently in enterprise application integration.

(Views expressed here and at are strictly his own and do not represent those of his employer. Nor of miscellaneous associates including friends and family. Nor of his dog. It's possible they're representative of his cats' opinions, but unlikely. Void where prohibited. Local sales tax applies.)