As I was studying for my Business Informatics degree, I had taken a class, where we were studying the basics of Visual Basic. I might not be a professional in the field, but this is my take, on what practice were good, and what I did or would make better.
We started by programing some of the examples in the Microsoft Access. We started by making messages appear. Then we manipulated the messages, making them appear based on the input. We also took the connection to Access database. We also used two lessons, on creating web pages with .NET technology.
The final project for that part of the course was creating the program, that would read the database and polluted the combobox with the values from there (there was some other details, that we had to make them as well, but that was the main part).
We took the approach, where we only learned the theory behind the code, if it was really necessary for writing the code. We mostly learned with programing examples, and then manipulating these examples to understand them.
For example, together we wrote the code, that changed the colour of the form, where we were imputing names. And then we were trying to make them different colour by ourselves.
The first thing that I changed, was my attempt in better understanding of the theoretical concepts behind the code. I was lucky that I knew some of the programing from before (but Python instead of the Visual Basic), so concepts like loops, functions and similar were known to me. I saw a lot of people struggling with understanding of them. So I took the book from the school library (it was a beginner book). Then I simply read the book from start to finish.
There were some concepts, that were new to me, and I really benefited from the explanation in the book. It is a necessary for somebody learning with no prior knowledge about programing.
For people, that are self-studying the Visual Basic programming, the examples from the book can substitute the examples from our lessons, as long as the people studying are not just coping, but are trying to understand the subject by trying to manipulate the code in question, to achieve the similar result, but the one that is still different.
But the really reason, why I am advocating at least understanding of the basic concepts of programing, is portability. The understanding of theory did allow me, to practice at home as well, instead of only in school.
I am not having Microsoft Access installed on my computer (I had Microsoft Office Home addition installed at the time, but not anymore). So in order to practice at home as well, I needed to change the code, so it did something sensible in some other program.
I wrote the small programs in Excel, like for example the Do While loop, I used to check, what was the first unread book on my list.
For the bigger programs, I had used Mono developer, the program designed for programmers, that program in .NET languages (like Visual Basic and C#).
I have to say, even if I advocate the reading a lot, the most I had learned by programing the final project. Since I did not have Acess, I needed to find the best way to connect the Visual Basic program with database (I used SQLite), and programing the GUI, since I couldn't rely on Access to take care of it for me.
For self-studiers, instead of taking our final project, tackle the project of your own. A small game, a RSS reader or the film database. Whatever strikes your fancy. The more the project is going to be important, the more possibility of not giving up.
Because no matter, how much somebody reads before or how much examples somebody sees, there are going to be problems. The code will not want to run, because of one wrong letter, or maybe the code will run, but not in the way, that was intended.
In this situation, try to understand what is wrong, and if that doesn't work, hit google. There are countless examples of code and countless solved problems, so there is little chance, that the solution is not already somewhere out there.
After gaining confidence, all the programmers advice to help in the open source project, but I am not on that level yet (in no of the programing language).
Have fun programming.