What's New
Q & A
Tip Jar
C# Helper...
Follow VBHelper on Twitter
MSDN Visual Basic Community
  Discussion: How To Become An Expert Programmer  

Start with the basics. Learn how to program using one of the many introductory books available. Explore all the basic features available in the language. Examine the sample applications provided with Visual Basic and programs available for download from sites like VB Helper.

Be warned, however, that sample applications usually demonstrate only one or two concepts. The rest of the program may be quite rough. These examples will teach you specific concepts but they won't teach you good programming style. To learn that, consult books on programming style. For some recommendations, click here.

Depending on how much time you spend on this, it should take you a few months to become a competent programmer. Now work on the more advanced details. In Visual Basic these include things like client/server programming, building ActiveX controls, database programming, the development envirnoment itself (add-ins), the API, etc. Books and sample programs can help.

Monitor news groups and mailing lists. You will learn a lot by reading other peoples' answers. You will also learn about new topics you may not have encountered before. A particularly interesting mailing list is the VISBAS-L LISTSERV group.

When you see questions you can answer, do so. When you see something you think you can figure out, do it. Other people often ask questions you would not think to ask yourself. Tracking down the answers will teach you a lot.

When you have mastered all of these advanced topics, you will be an expert in Visual Basic. This may take one or more years depending on how much time you invest.

To become a true programming guru, you should now learn a new programming language. Delphi, C++, Smalltalk, and Ada are good choices. Java is also easy to obtain so you might give it a try.

As you learn these other langues, keep an open mind. It is amazing how many people enter religious holy wars over which language is best. This is a waste of your valuable time. You can do almost anything reasonable in any language and no language is best under all circumstances.

All languages have something to offer. They are good at some things and bad at others. Learn the strengths and weaknesses of each language. Compare them to the languages you already know. If one language has a strength that another does not, figure out how to implement the strength in the weaker language using your code. If a language has a weakness another does not, see how the other removes the weakness.

After you learn a few different languages, you will see the common patterns they all offer. You will learn how to adapt one language to provide the features of another. You will know how to steal techniques from one to cover the weaknesses of another. Only then are you truly an expert.

The beginning of this process takes several years and continues until you retire. I have been programming professionally for since the early 1980s and I've used C, C++, Java, Fortran, Basic, Visual Basic, VB .NET, Pascal, Delphi, one flavor of assembly language, several graphics languages, a few Web languages, and I've been system manager of 6 different kinds of operating system. Every day I learn about something new that I previously knew nothing about. It's a never-ending process.

At the same time, however, you don't need to know everything. Some say everything you know is obsolete in 5 years (or some other length of time of their choosing). That's sort of true but the general concepts you pick up and the techniques you use to learn new things stay useful just about forever. For example, every programming language has concepts like comment, For loop, while loop, array, etc. Most have pointers or references. These days they all have objects. The list goes on. Even if you lived in a yurt for 5 years, you could come back and pick up the latest programming language without a huge amount of trouble because you already know all those basics.

Rather than trying to learn everything, you need to pick at something of interest a little bit each day (or week or month depending on your schedule). Initially every programmer needs to learn the syntax of a language. Then you can branch out into topics you find particularly interesting.

I think everyone should do some work with algorithms because they teach a lot of clever, interesting, and useful techniques. Many schools make algorithms part of the second year of a computer science program. (See my book Ready-to-Run Visual Basic Algorithms).

I also think everyone should do some work with project architecture, design, and error handling. Once you start writing more complex applications, you need to be a bit more organized. (See my books Bug Proofing Visual Basic and Visual Basic Prototyping).

Then you can branch off into areas that interest you personally (or that you need for work). For example, database programming is useful to a lot of programmers. Or you might find graphics interesting (another book of mine - Visual Basic Graphics Programming), or Web programming, or scientific algorithms, or transportation algorithms and logistics, or office automation, etc.

The key to all this is to take it a little bit at a time. No one can learn everything all at once. If you spend a little time whenever you have it available, it's amazing how much you can learn in a year. If you think about it all at once, you'll fry your brain.

Burt Abreu:

I find myself nodding my head as I read this, not in essay induced somnolence, but in recognition of certain facts which as a beginner I often need to be reminded of. One of the greatest obstacles I face personally is the desire to run before I can walk. Like a lot of others I've spoken to, I wanted my first programs to use advanced techniques when I still didn't understand many of the basics. I remember a few months ago when I started that I no sooner had opened the VB5 box, than I was struck with inspiration. Analyzing the problem I realized I didn't have a clue about how to do this. Did I research the answer? Pour through discussions lists and study online help? Not really, I promptly sent an email to Dan Appleman the author of "Visual Basic 5.0 Programmer's Guide to the Win32 API" and asked him how to do it. Luckily Dan was pretty cool and answered me in such a way that let me know I wasn't going to find any easy answers.

I'm trying to focus on VB a little each day. It's hard, I tend to study a little about a lot of things, rather than getting into any depth. In fact I can honestly say -as I look at over 30 programming books that I have accumulated- that I've completed 'Dummies" style books in C,C++,Basic, Visual Basic, HTML, DHTML, COBOL, Java, Perl and anything else you can think of, but can not claim to be a programmer in any of these because I jump around too much.

I figure some of you can relate; I get questions everyday from people who just installed VB5CCE and want someone to send them the code to build the next 'Quake' or 'Doom'. So I guess the point of this essay is to give myself a little kick, put away all that advanced code that I've been picking at (that I can't even begin to understand:-) and start to write programs that are just a little beyond my level - enough to make me stretch but not so much that it seems impossible. Most of us want to be like the hare when we really should be doing is admiring that darn tortoise. :-)

Ron Richey: How to become an expert programmer. Wow. I consider myself a professional (I'm a senior programmer analyst if you like titles) but never an expert. Never!

I would think that the programmer (coder?) would need to have a great passion for this sport. I've witnessed people failing because they did NOT take it personally. Programming is personal, even if you live by standards, (that's called SOP) it's still personal! It's your life for cryin' out loud! Its what you do! Do it with fever!

Office politics are another thing. A different way to make money$$$ I've never been very good at that. Ihe only [reason] Bill Gates is good at that is because he hires the best lawyers, marketers, etc... At any rate...cheese and crackers, he hires the best...Does he program anymore? Well, I would but on a much smaller scale than the people that I hired...I'm rambling aren't I?

The bottom line is get as much schooling as you can whether it comes from a homeless person or a corporate executive...

Ken Guest: I certainly wouldn't call myself an expert, but I have been asked how I know so much about VB. Well along with reading the books, websites and help files I tend to use the object browser.

There's a lot of hidden yet worthwhile information available through the object browser and with a bit of trial and error (which is the best teacher) you can learn quite a lot.

Kevin B. Castleberry: Well I don't consider myself an expert VB Programmer yet. I am in the middle of building an N-tier manufacturing application and an underlying foundation for other programmers to use. 4 Years ago I was president of a database engine company. I got to that top spot because I was pretty good technically and an expert at customer relations. I got fed up with all the time I was spending with lawyers, accountants and shareholders and set out to become a VB Programmer (previously I was an expert in Kman, GURU, BASIC (vintage 1978).......,some C and Object 1)

Well I am pretty happy with my progress so far and this is how it has happened.

The Projects

  1. Large Access reporting project (over 200 complex reports).
  2. Some prototyping projects building com servers for proof of concept
  3. A time tracking system built in Access
  4. Since May I have been building a foundation (while completing two applications based on the foundation) for other programmers to use when building N-Tier business apps.
The books:
  1. Sam's Intro to Access in 21 days (loaned out so don't have title and author )
  2. Sam's "Teach Yourself Visual Basic 4 in 21 days", Nathan & Ori Gurewich
  3. "Access 97 Developer's Handbook, Litwin", Getz, Gilbert ***
  4. Sam's "Teach Yourself Database Programming with Visual Basic 4 in 21 Days", Amundsen & Smith
  5. "Doing Objects in MS Visual Basic 5", Kurata ***
  6. "Professional Visual Basic 5.0 Business Objects", Rockford Lhotka ***
***Essential reading I feel.

While reading all these books I was actively building real applications using the techniques.

The Other:

  1. The mail lists for vb and access that Rod mentioned above.
  2. Sites like this one.
  3. VBPJ and other magazines

Where do I go from here? Right now my plan is:

  1. Continue working on my current N-Tier Foundation and Applications project.
  2. Dan Appleman's "Visual Basic 5.0 Programmer's Guide to the Win32 API"

Any suggestions would be appreciated.

Donald Moore: How to become an expert? Who cares, if it ain't fun it ain't worth doing!

Why worry about being an expert? Sounds like you have something to prove to me. Don't worry about being an expert, spend your energies enjoying it, being creative. I am only but 26 years old, but I have been working with computers heavily since I was 8, that's 18 years, no not video games, but actually pushing of myself to understand, wishing to be closer to it for our hands are too clumsy, growing up on-line.

I agree, anyone that blames the computer or faults the language for being the source of the problem is often a novice programmer or the hobbyist *coder*. Languages themselves are nothing but a horrid implementation detail, I love programming but I think everyone will agree, languages are limiting in their ability to express your ideas, therefore development platforms of the future are environments that allow you to create *custom* languages for your project, or your business logic. Why do I think this will happen? It must, for it's easiest for anyone or anything to express itself in its own *native* language.

You see, Real Programmers can program in any language, and does it well. This doesn't mean you know every language in the world, impossible! But notice the "and does it well", that we can do, and that is accomplished by understanding the fundamentals of computer science itself, having a good math foundation. Now languages become nothing more than a pastel of watercolors, your keyboard is your brush, and your love and appreciation for such beauty makes you the Artist. And for anyone to wield the brush, mixing your colors is a natural thing to do...

James Apodaca: I think you guys need input from a beginner's/newbie's/begger's, what ever you may call me, point of view. If you ask me Visual basic or any other language that has been out for a while, would have been easier to learn when it was still a developing language. I have been trying to learn visual basic for ... shoot 3-4 months now ... and I have finaly learned the extreme basics of the language.

I have bought numerous amounts of books, I read them, and do what they tell me to. But I dont learn much. Its like someone is teasing me saying "I know more, but I wont tell you" ...

Trial and error is and would be a great way to learn VB, C, C++, Delphi, and the other umpteen million languages there are out there. But most of the older versions of the software don't have the pop up helpers like VB 5 + has ... Take me for instance, I have VB3 and VB4, between them dont give me enough support to know how to change the color of a form via code. And help files dont tell you jack about programing, They just tell you how to use the product, and trouble shooting just incase you screw something up.

Hell yeah!, I would go out and buy VB5+ (+ = or Higher) if I had the money. I am 15, And as we all know teenagers are the poorest people on earth. If microsoft wern't so conserned about milking the world of its money, there would be alot more BETTER teenage, hell just programers in general, programers out there.

Ben Whaley: I am 18 years old, been working with computers for my entire life. I game incessantly (more of an addiction than anything else), but also work with hardware and the technical side of things. I consider myself to be very efficient with computers and see myself being successful in the future. My goal is to become a game developer for any major company.

Programming is a very difficult thing to learn, and I am only just beginning. In a way I wish that I would have grown up when the older languages such as BASIC were just coming out. I believe that it's essential to work your way from the ground up. I also believe that one should learn about how the computer works before he tries to make it do what he wants. A very good book for intermediate computer users is "Bebop Bytes Back". Yes, the name doesn't quite grab you by the throat, but the book is very helpful and will tell you more than you ever wanted to know about how a computer works. Scope it out at www.maxmon.com. This will provide you with the background you need before committing your life to a program.

On top of this, a person should love what he's doing. If computers are not your passion, if you dread going to your programming class or finishing a project you started, don't commit yourself. Programming takes A LOT of time and effort, and if you don't like and just want the money, you would probably be better off finding something you love.

Erwin Cortagerena: I'm 21 years old, with 10 years in the programmer world. I begin to study VBasic such a hobby in 95, but now is my profession. I want to suggest how become a great programmer from the beginning, almost my experience. I suggest the following planner and sources:

1 Stage - Basic Skills

2 Stage - Deeping More

Now you have an very good basics of VB concepts. Now is time for deep more into more specific topics such:
  • OOP
  • Active X Components
  • Web Applications
  • Database Programming
  • Others
(See Stage 3)

BUT, I suggest deep more in the basics of ActiveX components before begin other topics:

  • Component Tools Guide (MSPress, Microsoft Corp) [I couldn't find this title so I'll refer to my book Custom Controls Library. Not exactly the same thing, but it does talk about ActiveX controls.--Rod]. That is the continuation of the Programmers Guide, but explain topics such:
    • ActiveX (Components, Code Comps, Controls, Documents)
    • ActiveX Controls shipped with VB
    • Making DataSources form classes
    • Internet Applications (IIS apps, DHTML apps, WebClasses, Deploying Active X Ctrls)
    • Programming with Windows API
    • ...And Making Add Ins (if you don't will make AddIns apps, not read this part)

3 Stage - Choose

Once you are choose what are the follows skills that you could want to learn, choose the correct book. That is: one that begin from the beggining. More later, If you nedd deep more over this topic, read a more advanced book.

The best are this books with titles such: "Learn XXX in XXX time" or the books ranked in the "Beginner-Intermediate" grade (see the backcover of the book or the catalog for see this classification). The MCP books (Que, Waite's Group, SAMS) are very good in this stage.

For example that is the books that I choosed in my studies (database-oriented):

NOTE: this books are only samples (my experience), but are several useful books in this areas and others.

4 (Short Way) Stage - Become an advanced programmer in the area

Once time you read an introductory book in your specialization area, is time of expand more the base adquired. In this stage I can suggest some guidelines, but you are a serious VB developer, so you can build your own way. My experience in my database-oriented learning (I'm stay in this stage yet) is:

4 (Long Way) Stage - MCSD Certifications

Now with the new contents of the MCSD (Microsoft Certified Solution Developer) certification is the best time for become a real professional. Are covered topics from the beginning to the top most knowlodgements (MTS programming, nTier apps, COM Components, OOP, ADO, RDS, Distributed Applications, C/S programming, MSMQ, Web Applications, Business apps in the Web, etc, etc). These are 4 basics tests, BUT NOW with a redesigner of each test, incorporating technologies such Simulations, Computer Adaptive Testing (such in the Novell cert.) and the beta Case of Study Test Demo for the 70-100 exam.

How to prepare these tests?:

Well the more obvious answer is: make the courses in an ATEC (Authorized Training Education Center). But these option is the most expensive (thousand of dollars) and is very far for several people like me. So, the following is a list of alternatives sources:
  • Prepared the contents with common books (such the books enumerates or choosed for the previous stages).
    Up: is the cheap option
    Down: maybe the books not contain all the exam contents
  • Books and training kits for each test. MSPress (Mastering Series); Coriolis (ExamPrep, ExamCram Series), Sybex (MCSD Study Guides Series)
    Up: cover almost of exam contents, practice test and simulations
    Down: a lot of info already study in previous stages. Release dates (from Dec98 to March99, need wait).
  • Official Course materials of each course. You can buy these materials in any ATEC. This come with test materials and with the a voucher for the test.
    Up: no wait until the release date of the above Books. Are the official materials (more success probabilities)
    Down: are expensive (US$250), exam included
  • Microsoft Skills 2000. Finance loans for your study (books, courses, computers) SEE the Microsoft Web Page or www.itloan.com

Reference materials

For any stage you will need reference sources for deep more and answer some of yours questions. Here I drop a list of printed and electronic sources:


  • VB6 Language Reference (MSPress)
  • VB6 Controls Reference (MSPress)

CD-Roms Media

  • MSDN VStudio 6 Edition (shipped with the VStudio 6)
  • MSDN Subscriptions (Library, Pro or Universal) (I recommend one of the last two)

Web Sites

For more web sites: SEE the links page of this website (www.vb-helper.com) that contents one of the most large list of VB websites in all the Web.


  • MSNews and others


  • Visual Basic Programmers Journal
  • MSJ
  • Mind
  • ... and more
  • [Visual Basic Developer -- Rod]

For more info of the books and sources here explained, please contact to me in

I want stay in contact with VB programmers of all parts of the world, especially from the USA.

Elaine Sims: I'm a Senior Software Consultant at a Microsoft Premier Partner Firm in Atlanta, Ga. And I must say, the bottom line to becoming an expert in any programming language is having a passion for what you're doing and a love of learning.

It doesn't take years, either. I've only been programming professionally in VB since 1995. I am an architect by training, but found uses for VB and Access on the job at design firms when I could.

By creating my own problems to solve, a project estimating application for the Design Managers on my staff for example, which used an Access Database on the back end and VB on the front, I jumped into VB and DB programming. (I was required in college to take BASIC and FORTRAN, so I understood basic programming structures and principles).

After creating projects for myself at work and working on them in my spare time, after only one or two projects under my belt I started to charge the firms I was working with not only for my design skills but also for my programming skills. And then I eventually struck out on my own as a professional programmer.

The only way I was able to progress so far so fast is because I have a passion for learning my craft and wanting to be the best at it.

If you just want the flash of the UI, or maybe you just want the money you can make as a programmer, sure you can do that, but to become an expert you need much more.

Case in point, I have a friend who admired the way I had shifted careers, to him it seemed over night. He taught himself VB and got a job as a junior programmer in less than 6 months time. He got an excellent salary, too. But he only lasted 4 months on his job.

No he didn't get fired, he quit. It's because he had passion for the money you could make as a VB programmer, but no passion for programming.

You can become an expert in VB by having a passion for what you're doing. By all means, do the kinds of things all the people have listed here. Knowledge is power.

But, why do I need to tell you that? If you have a passion for VB you'll seek out those things on your own anyway.

Andre Bynoe: I most certainly do not consider myself an expert programmer, yet programming is a passion. In the quest to become an expert, do not forget to become familiar with other applications on your computer. Observe how other applications handle certain tasks. They may save you from having to recreate the wheel.

This is what happened to me for a recent project: to develop a program that can display Microsoft Power Point presentations from a list, and be as automatic and hands free as possible. The application would be used for an engineering conference and the visitors at the conference should be able to select from the list of presentations, which presentation they would like to see.

It took me some time to think of the situation and what steps I would need to begin programing. I started using my computer, taking a look at code snippets from other projects and searching on the web on OLE samples and stuff. Then I thought it would be nice to display the list of Power Point files in something familiar, like a web browser. I know Microsoft Internet Explorer will make use of OLE and run a Power Point slideshow from within IE without asking to download it to disk as Netscape would. IE is fairly automatic on some things.

I used VB6's built-in ability to make a web browser and customized it for my needs. Added features to make the application as hands free as posible and secure. Then developed a nice looking web page for it with links to all the Power Point slideshows and I was done. Took less than a weekend, and I was two months ahead of schedule.

The point here is I didn't have to struggle and recreate the wheel making a fancy OLE application. VB had all the tools I needed, but it took to realizing how MSIE would behave when being used as a file viewer. When I knew that, then I clearly knew the path to take to accomplish the job. So, keep you're eyes open, not only to books, but to the abilities of other applications.

Nick Wade: Just a small voice from a non-programmer with a habit of buying program languages and associated expensive books. I have read your comments with interest. I'm not a programmer and strongly doubt that I have the stomach to be one. But other than having an immense desire and a lot of time to learn programming, and perhaps some professional assistance, I don't think that training to become an expert is made particularly easy from the start.

Take the "learn X in 21 days" series, these are expensive and poorly developed, though from the number of pages you would think that they would be comprehensive (just take a look and see how many of these books spend most of the pages dealing with explaining the UI rather than how to do programming).

I've just started with the VB6 learning edition and was impressed with the introductory CBT but within a very short while found myself asking some serious questions - database handling for one, very little was dealt on the subject and your left to wade through masses of verbals in the online help.

What I would like to see is a series of training books called "No Frills Training on X" that just stuck to the facts without a lot of pleasantries and unimportant stuff like half a book on the UI. Then maybe I could retain my enthusiasm long enough to learn one of these languages. (Ps I'm not a computer nurd like I'm afraid most programmers seem to be, so assimilating manuals is a slow process)

[I have actually tried to sell this idea to my publisher. A series of small, perhaps 100 page, books on very specific topics: how to print, how to use a simple database, etc. Unfortunately these books would be fairly expensive for their length so my publisher feels they would not sell. I think you need at least a couple hundred pages these days. -- Rod]

Keith Gardner: I was a COBOL programmer for an interstate bank back in the 80's. I've developed applications in Access, Pascal and VB. I've also trained end users and developers. Even so, I felt like more of an expert before reading the various suggestions on becoming an expert.

The combination of learning the fundamentals so I could teach others and having real world applications to develop personally has accelerated my learning greatly. I get free courseware, get paid to learn and teach it, and use what I learn to develop programs for my clients.

Three other areas critical to becoming an expert are curiosity, persistence and passion. I can tell which of my students will excel as a programmer by how willing they are to experiment, to take chances and try new approaches. They keep at it till they figure it out and they enjoy doing it. I was up till 5:30 Monday morning working on a billing system for an ISP. My wife thinks it was because of an impending deadline. Truth is - I tear into a project and I want to keep at it until I win. You've got to love it or you won't excel.

    Expert = Curious + Persistent + Passionate + Sharing

Al Hechter: I have found through my experience with PC's ( Six years ONLY), that the more I learn, the less I know ! I have been programming with VB 5 and now VB 6 for about 6 months now and am busy developing a server side application that uses satelite programs to gather information for reporting purposes and give complete control of the remote PC's. To this end I use TCP/IP ports and and an extensive amount of API's.

I regard myself as a beginner at best. I have always used the MSDN library to solve problems and have found it to be an invaluable wealth of information. Though I learn fast and without hicup I continue to be amazed at how much there is to learn. I have developed a web-page using IIS that displays its information from a database which can be updated remotely without the use of an SQL server. Two days worth of coding and learning. That was just a few days ago and now I'm finding hundreds of ways to do more with less code!!

I soppose the do all and end all of this is simply to say that its not about how much you struggle or dont struggle( the latter is said with tongue in mouth) its about the passion of coding. Success usually only comes at 3am the morning when your wife is about to drag you by your ears from your PC :) .

I have a passion for coding and being a beginner or better (Expert is in my books not possible in this world of ours with technology moving so rapidly.) makes little difference when I do manage to finish a piece of coding that does exactly what it is supposed to, and quickly at that.

[It has been said that Newton was the last person who knew everything. He knew almost everything scientific that anyone knew in his time. Now days things are much too complicated for any one person to know everything. I know a lot, but like Al there is far more that I do not know.

I define a programming expert as someone who can do as Al does: work on a problem and get it working quickly and correctly. I don't believe you need to know everything instantly. An expert also must know his limits. Someone who thinks he knows everything about programming is only fooling himself. -- Rod]

Nick Tsocanos: Well, I think being an "expert" is a very relative term.

Expertise is not something measured only in what can be gained from applying knowledge. I think expertise is not only science but an art. When I sit down to program, I feel like I am a conductor of an orchestra. I move the code in and out of the melody of the project weaving a pattern of beauty and perfection. Ok, I'm being a bit too ideal.

Truthfully, to be a true programmer, you have to program for the enjoyment of creating the code. When confronted with the challenge to make the machine do what you say, you do it, and then push it beyond what you wanted! Perfection, Perfection, Perfection. When you write the code once, rewrite it again, and another time, and another. Everytime push it to the floor making it more a work of art, putting your love and joy into your work. This is what I define as being an 'expert'. The fact that this person can crank out top quality code is a by product. The Art of Computer Programming is the merging of Figure and Ground, Formality and Informality, Rationality and Intuition. Remember, no matter what code you do today and no matter how good you think it is right now, three months later it will look like a pile of crap to you. A True programmer evolves constantly.

Having been programming since I started with the Atari 800 and 6502 Assembler and Atari Basic, Visual Basic still captures the joy I had programming this small machine. I think that is what makes VB so great. It gives you the feeling of programming a small machine with the power of today's modern computers. With a bit of sweat and labor, there is truly nothing VB can not do. The small 10% of VB can't do can be wrapped up in C/C++/Delphi DLLs.

For beginners, I suggest this: find something you are interested in learning how to program, and attack it. If it is way to challenging (like having to access low level interfaces which are not easily exported to VB perhaps) maybe tone it down a bit. I think the absolute best way to learn how to program is to write games. I also firmly believe graphics was the best way back in the old DOS days, because it opened up the need to access the machine and taught you how to program the machine on it's level. Getting some old DOS QBasic and C compilers is a snap, and if you are a true zealot, spend some time in those 'archaic' days and learn how the machine works down in the basement. "Know Thy Machine" is my motto, Writing games for me is what started me into computers, and even though I don't do much game code any more, I still look back at video games as the gateway for getting me into this stuff! So I would recommend game programming simply because it depends on many areas of programming. And no I am not talking Quake. More like cheesy games, like Tic-Tac-Toe, or war games using circles and squares for pieces and crappy graphics. The output isn't really that important. It's putting your blood, sweat and tears into it and seeing it come to fruition. Yes, even a small Tic-Tac-Toe game is a joy to play when you know you did it all by yourself, even when it makes terrible mistakes! There is SO MUCH source now and I think that is the problem, people expect to find all the answers right on the web. When I first learned I had a 6502 assembler and the Atari Computer manual. That's it man! Learn to rely on yourself, and go to the experts only when you are completely stumped! When you start really understanding, then you can really begin to appreciate coding standards, and software engineering, and algorithms and AI and such.

Intermediate Programmers, I would suggest digging into graphics, AI, algorithms and data structures,C++, ATL Type Libraries for VB. I strongly suggest putting much effort into learning fundamental algorithms and data structures. Take some Computer Science courses at school and really put in 110% effort. Each lesson go a step further and research more into it. You will find that putting in total concentration will pay off. It takes some time though but persistence pays off. One day in your garden you will suddenly see it all plain as day. Or maybe not.. it worked like that for me in Calculus anyways :)

Advanced : When I get here, I'll let you know!

Enjoy it! Programming for money is only a means to an end; programming because you love it, no one can take that away from you. Put your personality into your code, and do it the way you want. When you get into the real world, you'll have to conform (a bit) but if you are a true zealot it will shine through, and people will probably resist you, but you will overcome them because you are a true programmer. The true programmer will always be recognized in the crowd because he/she loves what they are doing, and not just making a buck (although that's nice too!)

John Carling: I teach IT to a wide variety of people in and out of employment, senior and junior status, high and low end user. Mainly just MS Office but I love programming which I do pretty badly. Best not to do things badly.

I'm proud that the trainees usually become the office expert in whatever they look at and they come back for more. People taking exams pass them.

But I've noticed that the few people who want to be "programmers" almost all give up. They are more likely to turn up late. When they arrive they frequently expect me to stop spending time with others and start talking to them. They usually have a poor understanding of the basics. They don't, for example, understand Windows. They all want to run before they can walk. Impatience is a common trait. Some have no understanding of maths or logic and don't see the need for it.

Most of the people who do become IT professionals start off word processing and get good at it. They like to learn to use spreadsheets. They play a little and learn to grab a bit of code and change it slightly. People ask them how to do things and they share. They help and have fun. They need to be in the right environment to help them flourish too. They end up creating little bits of this and little bits of that. Eventually they realise they are application developers or highly paid Network specialists.

Not sure if there is a moral or even a point to any of this.......

James B. Snyder: I have been seriously studying programming in VB6 for around six months. Obviously, I haven't the foggiest idea of what makes an expert. What I have learned, the hard way, is how to be a beginner.

I can clearly remember how thrilled I was when I first opened the box on my new Learning Edition and started following along in the tutorials (both those that came with the software and a simple book). It was, to my utter amazement, EASY! I began to believe that I must be some sort of programming savant, and started looking for a few personal projects to tackle. After flailing around at a simple DB interface for a week and getting absolutely nowhere, I had to admit the truth. Sure, I could draw some pretty pictures that looked like a program, but I knew nothing about writing code. (My previous coding experience consisted of some Fortran and Basic in college some years ago, and few .bat files and macros over the years). Being able to comprehend a programming language or methodology is simply not the same thing as being able to do it. The former requires a certain level of intelligence, but latter can only be accomplished by practice, memorization and drilling on the fundamentals -- in short, it takes hard work.

First I picked up an A+ Certification study guide. Though the information was not of much direct use in programming, I am certain that a broader understanding of the hardware has helped me. Next, I got a good book on QBasic, downloaded an editor/compiler, and set to work (while continuing to study VB6 at the same time). After a while, I started feeling cocky again. I was able to understand all of the "Intermediate" articles in VBPJ. I could follow along with the more advanced books, and have some fairly interesting programs to show for my efforts. I discovered OO methodologies, and could usually cobble together some combination of tools, classes, and pasted-in procedures to accomplish a goal.

Once again, I found myself wondering if it is enough to be able to comprehend what others were doing. I could copy much more complex code from other sources and make it work (including some very fruitful, if annoying, exercises at debugging the erroneous code in some books). But I was, and I still am, a long way from being able to create the same solutions by myself.

Yet again, I have taken a step "back" from the flashier aspects of the VB IDE, this time to study the fundamentals of algorithms. (Look around this web site and see if you can guess which book I bought). I am still dividing my time between this study of the language and other VB topics (construction and design of databases and thier GUIs, mostly). But now I have a much greater appreciation for what is going on in the guts of all those modules. Not coincidentally, I am also beginning to understand just how badly my cut-and-paste projects are slammed together.

Once I comfortably wrap my mind around the mysteries of recursion, balanced trees, hashing and so on, I will probably allow myself another round of self-congratulatory pats on the back. I just hope that it doesn't last too long. The real progress only seems to come when I realize that I don't know much of anything at all. And that may be the most important thing that I have learned.

In reading the comments of others, I am struck by two things. First, that many people I would certainly consider "experts" do not view themselves the same way. This is a big field of endeavor, and I have to assume that what I have experienced is not uncommon -- the more you learn, the more you will realize you don't know all that much. Second, that the people who stick to it do so because they love it. I would like to make a career change into programming, when I am ready. But even if it remains a hobby for the rest of my life, I will never regret one minute of the time I spend hunched over a keyboard trying to learn and create.

Wish me luck. I intend to keep plugging away, and I can only hope that maybe someday I will be able to say what makes an "expert" programmer. In the meantime, and for as long as I continue the cycle finding myself a "beginner" over and over again, I doubt that I will take time out from actually learning programming to write about it. Unless I miss my guess, that may mean that this will be my final word on the topic...

EVIL2000ES: Reading through all the responses posted so far, has prompted me to write this. I think it is very unlikely for anyone to become an expert in all fields of programming. A programmer can be very good in areas which he has to program in or in areas which interest him most. I consider myself to be good in graphics programming but maybe a little okay in database programming but i can't make even a simple wordprocessor. Ask me about graphics related WIN32 API , i can tell a lot, i can show cool demos on using regions,paths, rasterops,device contexts or pixel arrays but i am blurrrrr in other areas.I can do most of the things that can be done in softwares like Adobe Photo Shop.Why? because i like images,because i have to work with images. So where are you going to put me? Beginner, Intermediate or Advanced or Expert???? So, i guess people don't really become expert in everything in any programming language but people specialize after sometime.
Brady Tippit: I think the key to becoming an expert programmer, no matter which particular language you use, is acquiring the ability to understand precisely what the code you write is doing in the computer's memory. One should understand memory addresses, the call stack, rvalues, lvalues, vtables etc..

Nearly every expert programmer that I know of has had experience, in one form or another, with either translator design or compiler construction. Unfortunately, Visual Basic programmers are never exposed to this kind of knowledge. All of this "under the hood" information is hidden behind the interface that Visual Basic provides. If you ask the average VB programmer what a parse tree is or what EBNF is, you will see a puzzled look on their face.

I have programmed in Assembler, Cobol, Pascal, Lisp, Prolog, C, and C++ but have avoided VB until recently. Nearly every programmer I know considers VB a "toy language" as I once did. Many Computer Science professors have refused to teach it at universities.

However, I have found that it is possible to make VB do just about anything you want it to IF you are willing to step out of VB and learn C++ (which is the language VB was written in). Anything that you can't do in VB you should be able to write as a C++ .dll and call it from VB. Not only will this dramatically increase the power of your VB programs but will also put you way down the road to real expertise. And while you are learning C++ I would highly recommend becoming proficient with data structures and algorithm analysis and if at all possible learn as much as you can about how compilers are implemented.

[I whole-heartedly agree with this. Different languages have different strengths and weaknesses. When you learn new languages, you learn new techniques that you can apply to other languages. -- Rod]

James Keirstead: Re: Series of training books called "No Frills Training on X" ...

It seem to me that a sensible compromise here would be to have a series "No Frills VB 6: Book 1: Topic 1, Topic 2 and Topic 3" where you could group three of these focused books, even by different authors, into a book that covers a general topic. For instance, Book 1 - VB 6 Web Tools; Topic 1: VB6 DHTML, Topic 2: Web Classes, Topic 3: Web Database connectivity (though this may need a separate book on its own).

[This particular topic has sort of been covered in this way. The book Visual Basic Programmer's Guide to Web Development provides a decent introduction to a variety of Web programming topics. The point is well taken, however, and I hope to put together some booklets either to sell cheaply and directly, or to post on the Web. It'll be a while before I have that much time, though.]

Tim Maslyn: Well, after 9 years in the programming world....the real programming world involving real work....I would have to question whether or not anybody can truly be an expert with Visual Basic or any other language. I started programming in the Air Force using COBOL, and eventually worked my way into using Ada and C. Since then, I have programmed in C, C++, 4GL, and of course Visual Basic. I have database experience using Access, SQL Server, Sybase, DB2, Informix, FoxPro, and best of all, Oracle.

I am far from an expert programmer, as I see it, because in order to be an expert with anything, you must understand that thing from beginning to end, and inside and out. Take Visual Basic for example, in order to be an expert VB programmer, you must understand everything from the basics of programming (logic) through the VB development environment, and finally any and all advanced level techniques to make the program the best program on the market. I feel that this means that you would have to know of every component on the market to make your product better than all the rest. Have you looked at how many add-ins and components are on the market today? It is really quite scary.

I have read books by Dan Appleman and others who are, what I feel, as close to expert level as anyone can get. The only people who I feel would be able to claim they are experts are the people who work at Microsoft and wrote VB, because they truly understand how VB works.

I feel that I am an advanced level programmer, but far from expert status. I don't even think that I would want to be an expert, there is too much pressure on that particular title - Expert!!!

Dseph: Hmmm interesting - I was just asked this question by an MCSD. While there are experts, nobody knows it all. The question comes to mind - are you seeking depth or width? Having wide knowledge of VB with decent depth and specializing in areas is usually what makes a programmer good, an expert or what used to be called a guru.

If you want to progressively and 'quickly' get up on VB so that you can be considered to have "expert" knowledge, try this:

  1. Teach Yourself Visual Basic 6 in 21 Days
  2. Visual Basic 6 from the Ground Up
  3. Microsoft Visual Basic 6.0 Fundamentals
  4. MCSD Training Guide: Visual Basic 6 Exams (Covers Exams 70-175 and 70-176)
    Microsoft Mastering : Microsoft Visualbasic 6.0 Development
  5. And of the highest importance - All along the way read articles from MSDN, VB related web sites and magazines. These are usually sources of your best information. Keep links to MSDN articles, web sites and keep your VB magazines - if you don't see anything important in them today, you will tomorrow.

Reading is never enough - build it. Use the language, play with it, build stuff - this is one of the best ways to learn a language. From knowing nothing about the language you may be able to your goal in less than a year if you make it a priority.

I've been professionaly engineering software for about 12 years and started writting code 18 years ago.

kennardj: I am an Electrical Engineer designing and programming factory automation and robotics. I 'know' approximately thirty to forty different languages/dialects, can't keep track of them anymore. I am not an expert in any one language. For a person to be termed, in my opinion, an 'expert' in the terms of any one complete language he would have to have written the language itself, the whole thing. Or at least to have used the entire thing including all of the win api, dll's available, you get my drift.

There are a large number of epert programmers. This would be a person who, if he doesn't know to write the code, can either learn it himself, or find the information he needs from someone else. This capability does not come from writing in one language but from a broad knowledge of the computer itself, hardware, software, many languages and the methods/techniques used in different languages, from machine code to scripts.

It is also the practice of writing code that is easy to understand, debug, and use. My opinion is that this is most completely learned from writing assembly and taking classes in it to learn and develop the habits of writing code in a concise, understandable manner. Start there and work your way up.

To the people that have stated that they wish they had started out with Basic 1.0, go take a class on the Motorola 6800. The processor is still being used today and the methods and habits you gain there will be invaluable in the future. Quit playing the games, read and write code. One more point, document your code, I cannot stress this enough, document every routine, function, and line if you have to.

IceLake: I know HTML, JavaScript, VBScript, Perl, Ada, C, C++, Java, Visual Basic, Tcl/Tk, Cascading Style Sheets, JavaScript Style Sheets, VHDL, and Basic and I *still* don't consider myself an expert. And why? Because most programming languages accomplish the same (or similiar) tasks, so it's not like I'm always learning *how* to do something *totally new* with each language. If anything, I'm learning the same thing over and over and over again -- only with a different language of course. Also, I really do learn new things every day. My next endeavors are going to be XML, XSL, HTTPD, SQL, mySQL, etc. See? The list could probably go on forever. Well, there is one thing to note. At least life is more interesting if you have new things to learn every single day. Imagine how boring and routine it would be if we already knew them all and had nothing else to learn? It would be boring. Life is supposed to be challenging. Gives us something to do. Before I started programming, I probably never even really picked up a book. Now that I program a lot and code for the web in many of its languages, I'm finding myself reading those big thick books all the time learning how to do stuff--and a lot of the time I learn it for the heck of it. Who knows, it might help me some day get a job (still a student). Well, those are my thoughts on being an expert. I think the only Expert is God. We will never be perfect as an expert, unless you redefine the meaning of expert. If you define an expert as being a person highly knowledgeable in an overall field, then you can rest assure there are many experts out there. But how many Experts are there?

mduke: I have been programming for 3 years now and I love it. I make small programs here and there learning new things in vb as I go, and all I can say is that is your are starting to learn how to program is make sure you want to do it cause it's a hard road to travel but well worth it!!

Bob Crawford: I seem to be no different then anyone else writing here. I love to program too, VB, html, dhtml, and css. But my main flair is VB, it just kicks my but from time to time. SO heres my story of what ive learned along the way. I started dabbling in programming in 1995 with visual c++ and went and bought several of the $50. books over many months. Invested in Visual C++ 4 and tried and tried and failed because I read too many books and tried to do more complicated things then i was ready for. By doing this i got burnt out like couch potatoes who starts excercising at 200% thier ability and quit. Man i felt defeated, that is until i found visual basic and relized heres this program all i gotta do is through some controls on a form add some simple code and im done, boy was I wrong. Oh it is that simple if you want a program that doesnt do too much. Anyway to say the least I got burnt here too. So i put it aside for awhile and went to writting html and found that to be difficult until i met a guy at work who had been doing it for a few months and and he showed me the basics and before i knew it i was changing colors and font sizes. After a while of watching this guy he and a friend started an online game with html and they wanted to take it further so he said "Ive got to learn PERL now so we can add a web board for the game." A few weeks later he says "well ive got my web board workin, that was pretty easy" so i ask him how this was and he said his roommate he had been working with had taken some programming in college and already new html real well and he said that he taught him the basics and anytime he went for something new he and his roomate would bounce their ideas off of on another even argue them out until they came up with a solution and they made it work. He said this type of learning made it simple and fast. Granted this didnt help me since i was wanting to learn VB but i realized he was right, i had tried that before in a few areas to include my own education with a buddy i go to college with. We take the same classes and when its test time we study together and bounce our interpretations off of one another until we understand it and we move on. You see the same thing in the kid down the street trying to learn to play the guitar from his friend who has been playing a few months more then himself. I guess what i am trying to say, to make a short story long is, as others have stated in this discussion is you need passion for what you are doing, persiverrance to keep trudging on in the face of adversity and what i feel is most important(even if you both start at the same time) is someone to work with you. Not only that, it will also make it more fun to learn... By the way i'm still trudging along waiting for me to find a friend nearby who is in the same boat with programming so we can both become accomplished programmers.

Kriscott: I have been programming since I was 14. I am 26 now. I had the opportunity to learn machine language, assembly, basic, pascal, and VB6. Some taught in school, some self taught on my own. I absolutely agree on ideas to have fun while you are programming. I, myself used to enjoy programming because it was fun. Curiosity was the main driving force behind learning how to program. I am sure Bill Gates originally started to program because it was fun, not solely for the money.

I am not an expert nor do I make my living as a programmer. I like to believe having fun programming will get me close to an expert. I see it as a life time goal. Regardless, I may make my living as a programmer or not. I sympathize those who have to make their living as programmers just because it pays to. I want to know how many people are passionate and enthusiastic about their job. I am sure that artists are. Artists love their work. How many of you love your job as a programmer? I am sure most of you like programming.

Being confined into programming for a living, takes the fun out of programming. I program because I want to express my own thoughts. My thoughts become objects. Majority of my life will be spent working, but when I am not, I want to have fun programming... I believe key point to becoming an expert is to have fun. Why make your life and job boring? How can you not become an expert when you are having fun doing it? It's an ongoing process of learning. Learning is supposed to be fun and rewarding. Let's look at becoming an expert ongoing process of learning, more fun learning, closer to becoming an expert.

Rod Stephens: Programming professionally has not made it any less fun for me. It has opened new possibilities I would not have had programming in my spare time. For example, I doubt I could have found the resources to spend two years working with a team to build a dispatch system that manages thousands of repair people on my own.

However, it is true that after a long day of programming, I am less likely to want to sit down and do more programming for fun. My games Web site is not growing quickly in part for that reason. Instead I want to do something different: softball, painting, hiking, etc. -- Rod

Thomas Menacher: Expert or not, I have been programming professionally long enough that people trust me (and pay me) to develop systems for them. And what I have found the most rewarding is not the programming itself, but learning the business of the people I am developing for. It is fascinating to meet experts in manufacturing, or people with unique products to sell, or old guys on the way to retirement who need to pass their knowledge down to their successors; and to try to build a database and a front-end, or develop an application for them. It is just coincidence that I am programming microcomputers in VB, rather than programming on some large systems somewhere. But you know, large computer systems cost a lot of money and the software is not personal. "Personal computers" are by definition small enough to permit two or three people to interact on a personal basis. And that is the essence of VB programming.

Chris Wagg: How to Become an Expert VB Programmer? Don't bother!

Don't be so caught up in knowing everything about VB (or anything else): technology comes and goes - in 5 or 10 or 20 years, Windows and VB may not be around anymore! I know this seems far-fetched, but I've seen it happen before! While the programming experience is good for you, most employers will laugh if you try to point out that a long time ago you were an expert VB programmer. From personal experience - many employers have laughed at me for knowing, say, QBasic: they'll say something really demeaning like, "Ha Ha. We haven't used DOS in years. Where have you been? Didn't you know DOS is DEAD?". Believe me, they'll be saying the same thing about VB and Windows someday!

About 5 years ago I had the same aspiration: to become an expert VB programmer. Although I had been programming all my life and had been using VB for years, I was nothing close to being deemed an "expert". So I spent all my free time and effort learning everything there is to know about VB. It was a daunting task indeed: the more I read, the more I realized how much I didn't know (like the API). Becoming an expert is costly too. For example, friends that used to call me to go skiing or mountain biking don't call anymore since I was too busy "coding and becoming an expert".

So while I never achieved the title of "VB expert", I think I'm pretty good. But here's the biggest paradox of all: not many employers are willing to pay the price for so-called "expert" VB programmers. With the proliferation of VB now, esp. in academic circles, most employers just want someone who has simple VB experience: any college student or "newbie" will do. Experts are beyond most company's needs and payroll budget.

So diversify - learn and do other things too, like other programming languages and network or system admin. Besides, diversification will give the programmer in you new ideas! Forget the idea of becoming an expert VB programmer and instead concentrate on being an expert programmer!

John Bowersock: I am not an expert programmer in any language. I feel that the term 'expert' to be an abstract term, difficult to apply. To the non-computer person, if you know just a 'little' bit about programming in a language, then you are an 'expert' in their eyes.

Every day, I learn something new about VB. I learned VB6 through a college course. I had tried to learn it on my own prior to deciding to take a college class, and I did not understand the concept. I am now in my second VB class, and plan on taking a C or C++ series of classes next year. I feel that the formal approach to learning a language is better than trying to 'go it on your own' approach. The instructor can take the time to work with you if you need the extra help, but you have got to want to learn in order for the course to be effective.

I agree with several of the people responding to this article, not everyone has what it takes to be a programmer. You are an artist, painting with words rather than with paint. The finished product is as beautiful or horrible as you (the artist) wants it to be. Bottom line, there is no quick and easy way to become an expert.

I feel that an 'expert' is someone who knows more than I have learned or has been working at it longer.

Dale Thorn: In 1981 I purchased an HP-85 desktop computer with BASIC built in. It came with a 300-page book that explained how to do everything that was doable in those days (data entry and filing, numerical and string manipulation, etc.), and 30 days after the purchase, I had a pretty good inventory system running on the computer. To do that same task with a "modern" Operating System and language such as Windows and Visual Basic would probably take 6 to 12 months. Proof of this? A 300-page book with all of the requisite examples that tell you exactly how to create and maintain files, input from keyboard and disk, output to screen and printer, and even how to manipulate database tables (they were called random-access files in 1981). Although I much prefer the Microsoft syle of BASIC for its low-level data manipulation capabilities, the ramp-up time for today's projects (even those projects that have no more capability than my 1981 project) is so great that I would not consider most of them to be Personal Computer projects. In fact, Microsoft has clearly turned away from supporting what could honestly be called Personal Computer applications (except on the CE devices which are code-incompatible with the desktop computers), in favor of large corporate sales. It's ironic that DOS applications from years ago, which run on a variety of handheld and other small computers, also run on every Windows computer including NT systems, yet any executable code for WinCE does not. When the day comes (if ever) that Microsoft realizes that large-corporation users are also personal users (or want to be), and that they want to be able to do things with the computer their way, the way we did with BASIC in 1981, they will be guaranteeing their future against Ellison and McNealy et al, who otherwise will eventually eat Microsoft's lunch.
Phil McCarthy: I am an English teacher, and as such, whenever talking about computing in general (and VB in particular) I do my best to suppress my literary talents - with a worrying degree of success. This is my excuse and I'm sticking to it.

I spend the greater part of my life teaching international students the fine art of English communication, or more accurately, I spend the greater part of my life banging my head against the white board as I attempt to teach international students the fine art of English communication - or more accurately still, I spend the greater part of my life dreaming about banging my students heads against the white board: a learning technique I have yet to convince anyone the merits of - such is life.

Stick with me here - I'm getting to the point.

Some of my more energetic, enthusiastic, self motivated and talented students (in other words, those poor unfortunates whom fate has seen fit to dump into my princely care) often ask this most meaningful of questions. What do they ask? This is what they ask.

"How do you get really good at English?"

The answer I give, and upon which this missive is based, I would dearly love to claim as mine own. Unfortunately, modesty - in an otherwise less than glittering career - forbids. These words of wisdom belong to a former colleague of mine, and profound indeed they are. So, what is it that he said? This is what he said.

"If you want to master English; first, you have to make a million mistakes - so start making them now!"

The depth of that perception can easily be missed and is well worth repeating, so repeat it I shall.

"If you want to master English; first, you have to make a million mistakes - so start making them now!"

But, what does it mean? - what does it really mean? This it what it means.

It is upon mistakes that the pathway to perfection is paved (a little bit of assonance there). It is those who sally forth into the uncharted waters of their English capacity who discover the promised land. In fear they march, for there be dragons there, and many a mistake they find, many an error they make. Of embarrassment there is a plentiful supply, misunderstandings abound. Frustration, irritation, humiliation they meet - and yes, on occasion too, worst of all, that terror of terrors - the syntax error is also prevalent and appeareth with bloody-minded regularity.

The point is this - history does not record those who stay safe and comfortable in the coastal waters of linguistic communication. There is only so much one can see and do with; "What's your name?", "Where do you live?" and "What do you like?" Unless one is prepared to venture forth into the heady world of; past tenses, present perfects, conditionals and comparisons one will never know the full and complete extent and beauty of the what it is to master a language. And one must travel there knowing that mistakes will be made. One must indeed, travel there in search of mistakes. For only in realising and eliminating false paths will El Dorado be discovered.

So what might my former colleague just as easily have said? This is what my former colleague might just have easily have said.

"If you want to master Visual Basic; first, you have to make a million mistakes - so start making them now!"

So let me ask a question. What question? This question. 'What's the difference between a Rod Stephens and a me?' Indeed, 'What's the difference between a Rod Stephens and a you?' This is the difference. He has made thousands and thousands and thousands more mistakes than me. And probably hundreds and hundreds and hundreds more that you.

It is easy to see progress in programming as a ladder of unknowns which must be climbed - but rather, can it not be seen as a mountain of mistakes that needs to be levelled? And that mountain has to be chipped away at - one mistake at a time.

If we write a program that generates not a single error, what is it that we have learnt? What headway have we made? How is it that we can derive pleasure from this? But in a program that produces errors and undesired results with monotonous regularity - there do we truly make progress.

And so it is that there is nothing that pleases me more than getting it wrong. And whenever I get it wrong this is what I say - what do I say? This is what I say - "That's one mistake closer to Rod Stephens."

And so 'list boxes' are a laugh, 'text boxes' are titillating and 'loops' are lovely. But 'classes' are cool, modules are marvelous, and all is well with a DLL. Mistakes? Problems? A veritable feast of them! And with glutinous greed let us dine.

And if, by chance, one has managed to reach this far - let me state now that which must be obvious from all that has come before.

"If you want to master anything; first, you have to make a million mistakes - so start making them now!"

Bernie Greene: I am not an expert but I'm competent and can get the results that I'm paid for. I do not strive to become an expert but I do strive very hard to make my code do what the users need. If your goal is some kind of qualification then the following will not be helpful but if your goal is to create useable, worthwhile software then I think it might be.

Five years ago I wanted to learn VB. My reason was purely financial. I was a competent support type techie but I saw that programmers were making more money. I failed dismally not because I lacked the capacity to learn but because my reason for learning was not strong enough to sustain me through the barriers of learning. There are several barriers. Finding a good source of information, understanding the nomenclature, grasping abstract concepts like classes and objects etc.

I had a friend who was an excellent VB programmer who gave me one little piece of advice. "Find an application you want to build and then build it." The problem was I could not find one I really wanted. Then two years ago I was given an idea for an application that I didn't think had already been done. It was an application that a business could be built around and I was challenged by it. It was something worthwhile to me and I wondered if I could do it. It was worthwhile enough to overcome the barriers to learning how to do it.

Pre internet it would have been much harder to learn but would still have been possible. But with the internet it is absolutely phenomenal how much help there is out there from very knowledgeable people. I joined some VB newsgroups, found sites like vb-helper, even read some of Rod Stephens' books! which I can honestly say are very helpful.

That is how I got started and I would recommend the same to someone else getting started. Find an app you want to build and then build it. If you can't find one take something like a personal organiser and re write it. This is a very good type of app to get started with as it can be built up over time from lots of small projects to include lots of functions and will force you to learn a wide range of skills. Just take one function and figure out a way to do it in VB. There will be lots of ways you could tackle any of the functions. Just find any way and do it. Later on you will find better ways.

Later, and I do stress later, it is a good idea to learn about things like style, planning and commenting your code. It is a good idea to comment your code right from the start but, if you are like me, you will need to write code without comments in order to appreciate the value of writing with comments. I have found lately that it also pays in time saved and code efficiency to plan your software before you fire up VB. But again to appreciate the value of this you need to write by the seat of your pants first. Because my apps today are usually a lot more complex than they used to be I find I get in an awful lot of trouble if I just start coding without having figured out exactly what I'm coding first. There are probably many tools for planning but I find Visio to be absolutely brilliant at helping me get a clear idea of what I'm going to do and freeing up my attention so I can put it on what I'm doing rather than on what I'm planning to do.

One last point for those starting out. Beware the Style Nazis! These are people with an apparently very academic and pedantic approach to coding. They will tell you that VB is not a good tool, that you should learn C or even Assembly. These are the people who tell budding web designers to learn pure HTML and use Notepad rather than a WYSIWYG editor. Keep your eye on what you want your users to be able to do with your app. When you have some functioning apps under your belt you will be in a better position to evaluate ideas on coding style but until then concentrate on helping some users and putting a smile on their faces.

Brian Harring: The only advice I can truly offer for getting into computers and programming is to start small. I started with computers when I was 12, 7 years ago, and at the time my goals were just to know how to load up wolfenstein 3d. When you start using computers regularly, you start to find the little annoyances. In my case that meant I started learning batch file programming just for building menus; from there getting into windows I started wanting to be able to do things in one step that took many, many steps.

For me, programming is more of an outgrowth of necessity/laziness. ergo, if I write this code, I just run this program and I do it in one step instead of multiple steps. When I started actual programming, I was given VB4.0 by an uncle, and was around age 14.

A keynote about that beginning, I didn't start by trying to build a server-side app, heck, I didn't even know what it was at the time; I started small. A fast, small program for viewing various graphics files so I could find certain pictures faster. By starting small, A) you have a better understanding and ability of the fundamentals, B) you don't screw up on something small and stupid when writing something more complex because of the fundamentals.

You get one language down, you try to learn another. By learning another, you have a wider view of programming; this in turn leads to a better understanding of how it all works.

"Baby steps, Bob, one step at a time..."

Gregory Hampton: I don't usually post to these essays, and have been content just to read and learn. It has been a while since I have visited these pages, and maybe somebody will correct me if I'm wrong (since I have just breezed through the comments in this essay), but I think that most people have missed something.

"How to Become an Expert Visual Basic Programmer". This is the name of the essay. It could have been "How to Become an Expert C++ Programmer" or "How to Become an Expert Pascal Programmer", but this is a site devoted to VB Programmers. But the question is still the same.

So, How do you become an Expert Programmer? Simply by applying yourself to one goal. Give the users what they want and not what you think they need. Sounds easy, huh? NOT!! Too many times programmers have given the users too much of what they thought the users should have. I'm sure that a lot of you have seen this next example:

The requirements stated that the users needed a Harley Motorcycle. The designer specified that the users needed a family sized station wagon. The programmers implemented an 18 wheeler.

The users wanted a 3-speed bicycle.

Do your homework and get the requirements and specifications nailed down, and give them what they want with no bells and whistles that they didn't ask for and you are on your way.

[Here are some other examples to think about:

  • Microsoft Bob
  • Clippy
  • VB .NET

Josh Miller: How to become one? Don't.

The hardest part of building anything useful is going to be understanding people, and interactions (in this case with technology). You don't want to be an expert in programming cause there is so much else to learn to do your job correctly, and expertness will just slow you down. A large number/percentage of software projects are canceled or fail and are aborted midstream (they end up in a lot of finger pointing too). Your job is to get all the unnecessary muck out of your head, and other peoples heads, so that what you build is actually useful, or build nothing.

I'm a self employed programmer, and spend 90% of my time redrafting ideas (sometimes in the form of test code) because I suddenly realize that the person to use the tool will not understand it well. Therefore they will not enjoy it, and will execute their job poorly and the blame will eventually go on me, as it should. I think this way because my stuff has to work and be useful for the client, every time. I can't have the 70% failure/aborted project ratio that the rest of the software industry has, cause I'm too nice of a guy to bill my customers for that, even if it is their fault for not knowing what they want, and hence I would go broke (I'm not much of a capitalist anyway).

In order to see the pitfalls way in advance, you have to have a wide range of knowledge from computer hardware, to IP networking, to accounting packages, to common contact management software, to human habits and the phsycology behind the fear of using computers, and the fear of dropping money into the bottomless pit of technology, which leaves little room for programming expertness. You have to be able to tell the client what problems they are going have a year from now, before you even start designing the stuff, it's not as hard as it sounds, just requires some broad knowledge, an open mind, and a sense of humor :)

There are a lot of things that software relies on to function properly for the users. You really have to know about all those things, cause, well, its not that nobody else around knows, its that nobody else around cares, its your software, its your problem.

Example, when your jet database is getting corrupted cause some computer has an intermittent network card but nobody believes this is possible, you better be confident enough in your hardware skills to demand that it be fixed by whoever does that type of thing, and if there isn't anyone to do it, you better do it yourself (which means understanding their IP settings, proxy, firewall, security, etc). If the company won't install SQL(msde) cause their people dont know how to do backups on it, then you better be able to teach them.

You can't expect that all the things your software relies on will work, you have to know. And if instead you spent your time learning vboost object factories and optimized code looping (good stuff to know), then in some cases your doomed to watch your software fail over and over again due to what are for you, outside factors, until you lose the client.

Become an artisian of technology, the world needs em. Learn anything and everything you can about all facets of technology.

Dont be an expert.

Todd Pasley: I agree with everything mentioned in the article; however, I think the term expert mostly applies to those that have learnt how to learn.

With VB.NET out now and more and more coming all the time (in most languages), you are not an expert solely because you have used/know how to use, x% of the available functionality. An expert is one who knows how to take a problem and solve it. This includes finding the resources/help via whatever means possible (cool sites like vb helper, books and articles, newsgroups etc). I think this holds true for most areas of life and all it requires is a bit of passion to get the job done.

Well, that's my two-cents, master learning and everyone will think you are an expert.

Roger Smith: Yes, twenty or so years ago it was possible. Languages were far more basic, there were fewer interactions with the OS, and they were procedural. I was an expert - once! Now, after 38 years in development I'm a tyro again!!

I am struggling to get my head around the "new" technologies, something that (I suspect) most mainframers would also do. Done VB5 with the CDT, VB6 with a course of CDTs, struggled through half a dozen books - getting lost frequently as new concepts/terms are encountered without explanation, sailed through the exercises and model projects - and then? I decided to start a real-world project to get to grips with VB. I decided to write a basic organiser - the filofax type - and hit a snag immediately. How do I build the pages and enter data into them? So I search the internet and eventually hit upon the tab control. How do I make the tabs vertical? I still don't know, but I'm still looking. I'll find a way eventually, after making several false starts no doubt.

The point I am making (laboriously) is that the secret of learning something new is knowing the gaps in your knowledge, and knowing where to look, focussing on one item at a time. That's how I learnt 1401 machine code 38 years ago - I can still understand it even though I haven't used it for over 30 years. Knowledge gained the hard way sticks. And, as all the others have said - you must have a passion for what you are doing.

But, it would be nice if someone wrote a book, a series maybe, which progressed one project at a time, gradually increasing in complexity and gradually introducing concepts, and, pointing you at references for greater detail, so that you came out the other end with a well rounded knowledge and a map of domain.

The trouble with that is, by the time you had worked your way through this Rosetta, the technology would have moved on and you'd still be behind!

C'est la (technological) vie.

Ed Lyons: [Prequel: Your newsletter is great. I REALLY appreciate your time, efforts, and knowledge. Your comments on "How to Becomer an Expert VB Programmer" spurred me to respond to Roger with the following note. However, in my response, I forgot to mention how important it is to find other developers who you may emulate in coding style and problems approach. This has been invaluable to me. So, here's the response I sent to Roger:]

I liked reading your comments about the evolving technologies associated with software development. I started in 1979 with Visicalc doing my first job for pay using the spreadsheet to create a P&L statement for a company. I used an Apple II+, which I still have, 40-column monitor (80 cols with a special card that I sold too) 5.25" floppy drives, 48K RAM, and everything was wonderful. We didn't know any better. But, with no magazines or books to reference, one had to scout out friends who had the same problems as yourself. WordStar was our editor, and any programming was done in AppleSoft BASIC. The IBM PC wasn't even heard of yet. There were no databases or languages for the PC at that time.

So, I've been through the 25 years of evolution in PC hardware and software, and have remained a software developer since 1979 - strongly focused on VB. The "tough" thing facing somebody who was to become employable as a developer today if first conquering the feeling of being so overwhelmed by the languages and O/S's before them.

My rule of thumb has always been to keep your ear close to the track and sense what is popular and supported as a development language. This is why I switched to VB years ago and have stayed with it. My advise to beginners trying to get into this field is to learn a popular, well-supported technically, big user community language technology and get real good at it. Then, from that base, add other technologies such as web programming, etc.

Although, I like you, are still trying to wrap my mind around .NET and how it is an advantage to client/server development when not using the Internet, but the learning goes on just the same. This is a constantly expanding discipline and the newbee must realize that it involves constant replacing and polishing of the development tools.

Thanks for letting me share some of my experiences and opinions with you. And, of course, thanks for your thought-provoking article.

Bob Ceccarelli: Somewhere along the road to becoming a computer programmer, learn VC++ and read Petzold's "Programming Windows" even if you never intend to touch C in practice. VB sticks such a thick layer between the programmer and the OS that it was hard for me to understand (really understand) what's going on under the hood. Learning VC++ and reading Petzold corrected that deficency which made my VB and Access VBA code much more professional. My organization is not yet using VS.Net so I coming from a position of ignorance. But I suspect that the .Net framework (layer) will have the same effect on new programmers as VB 4-6 had on me - got it to work but didn't fully understand what I was doing.

Dale Elizabeth Corey: Wow! I was amazed at all the great feedback that everyone has written here. I am a woman who actually broke into the programming field after 13 years in systems administration and networking. I've been programming VB in Access and VB 5.0 for the past three years. I, too, would never consider myself an expert but have developed some very stable applications for my company. My motto is that "you learn something new everyday so never quit trying". Take what you learn and build better applications. In the future, my goal is to incorporate more class modules and standard modules in our applications for code reuse and really apply the unified modeling language (UML) before designing the application.

Some of the books that have been mentioned are excellent resources. One should mention the Books Online resource that comes with Microsoft's Visual Studio, etc. Also, if the VB & VBA in a Nutshell book hasn't been mentioned, it deserves mentioning. There are a lot of online tutorials that are available for free, such as, Visual Basic Tutorial, as well as tips galore at DevX.com VB, Practical Visual Basic, VBWM's Tips and Tricks, and Que: Using Visual Basic 6.

Anyway, your comments made me feel much more comfortable with my own programming skills.

Rajan Bowri: I agree with many of the comments made. As with any skill, to develop expertise in VB, it's necessary to start simply and to practice by doing graded problems, exercises and projects. You can read about VB until the cows come home, but you won't become a programmer, let alone an expert, unless you do it, make mistakes, and learn from them.

I accept our learning styles differ, but I do think that the majority of books on programming these days are far too large. It's hard to see the wood for the trees. You can learn as much, if not more, from a small relatively cheap book than from a bloated monster, padded out to suit the needs of the publisher rather than the reader. Have you noticed how every successive edition of a standard textbook in any subject seems to get disproportionately bigger to the amount of the essential factual content changed? My preference in books would be one of the 'Babani', 'In Easy Steps', 'Schaums', 'Sams 24 Hours', 'Letts', or 'Made Simple' series -- available in the UK for between £7 and £16. Once you've mastered one of these, and done the exercises, you should be in a good position to accelerate your learning by working through stuff on the internet or in larger books. I often keep a cheap notebook by my book or computer to summarise important points of syntax or usage.
See also:


Copyright © 1997-2010 Rocky Mountain Computer Consulting, Inc.   All rights reserved.