3. Learn Object-Oriented Programming (OOP)
A lot of great work has been done by gifted coders using structured programming techniques. These techniques simply do not produce the clarity needed for larger code bases. OOP will help you write clearer code modules.
What makes OOP coding better? You get to bind essential data elements to the basic code elements. Are you selling pies? You can create a pie object and track the pie object along with all kinds of data elements: cost, production cost, and so on.
Later on you can derive a more specialized object from your pie object. Create a blueberry pie object or pie by the slice object—nothing limits you.
Reviewing this "unified" code just makes more sense than tracing strung-out coding blocks that often tinker with global variables at will.
As your application grows and as the scope increases, both security and supportability issues usually raise their ugly heads. These issues suggest that you try OOP. Objects provide well-defined interfaces to other parts of the application. This helps with code access issues.
Where do you start? I’ve got a thing for Deitel books. I learned C++ and passed because of them. I’ve read Visual Basic 2005 for Programmers a few times. Great code examples. Useful (not just theoretical) teaching on basic OOP techniques. I can’t recommend the books enough. It won’t be a super easy read, but expect good content.
And after you know more about classes, polymorphism, overriding, constructors, and destructors you can go on to the next big improvement.