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.
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
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. :-)
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...
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
- Large Access reporting project (over 200 complex reports).
- Some prototyping projects building com servers for proof of concept
- A time tracking system built in Access
- 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.
***Essential reading I feel.
- Sam's Intro to Access in 21 days (loaned out so don't have title and
- Sam's "Teach Yourself Visual Basic 4 in 21 days", Nathan & Ori Gurewich
- "Access 97 Developer's Handbook, Litwin", Getz, Gilbert ***
- Sam's "Teach Yourself Database Programming with Visual Basic 4 in 21
Days", Amundsen & Smith
- "Doing Objects in MS Visual Basic 5", Kurata ***
- "Professional Visual Basic 5.0 Business Objects", Rockford Lhotka ***
While reading all these books I was actively building real applications
using the techniques.
- The mail lists for vb and access that Rod mentioned above.
- Sites like this one.
- VBPJ and other magazines
Where do I go from here?
Right now my plan is:
- Continue working on my current N-Tier Foundation and Applications
- Dan Appleman's "Visual Basic 5.0 Programmer's Guide to the Win32 API"
Any suggestions would be appreciated.
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...
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.
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.
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:
(See Stage 3)
- Active X Components
- Web Applications
- Database Programming
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.
Active Visual Basic 5.0. Now was released the VB6 version with a different name. Quick learning book of ActiveX technologies, Internet and COM. TIP: Read only some chapters, no read info about topics viewed in books of a previous stage, because are very basic.
Teach Yourself Database Programming With Visual Basic 5 in 21 Days.
One of the bests books for make the firsts step in the Database programming, and learn the new VB6 database oriented topics. TIP: Very good feedback and support of Amundsen.
Teach Yourself Transact-Sql in 21 Days.
In comparasion with others books in SQL, this is full programming oriented, very clear complete and a lot of samples.
Object-Oriented Programming With Visual Basic in 21 Days
Many concepts was viewed in previous stages, but have the same hits of your brother (TY TSQL in 21days) and put in yours hand the knowlodge necessary for implement this powerful characteristic of VB.
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
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)
- MSDN VStudio 6 Edition (shipped with the VStudio 6)
- MSDN Subscriptions (Library, Pro or Universal) (I recommend one of the last two)
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.
- Visual Basic Programmers Journal
- ... 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.
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.
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
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
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]
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
Expert = Curious + Persistent + Passionate + Sharing
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]
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
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!)
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
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...
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.
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
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]
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.]
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!!!
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:
Teach Yourself Visual Basic 6 in 21 Days
Visual Basic 6 from the Ground Up
Microsoft Visual Basic 6.0 Fundamentals
MCSD Training Guide: Visual Basic 6 Exams (Covers Exams 70-175 and 70-176)
Microsoft Mastering : Microsoft Visualbasic 6.0 Development
- 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
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.
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
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.
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?
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!!
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.
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
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.
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
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.
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
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!
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.
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.
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
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!"
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
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.
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
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..."
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
- VB .NET
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
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.
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.
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.
[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
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.
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
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.
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.