Learning technologies - In this case development
This is just a query to the forum around learning technologies, code, etc. I've been going at VBA fairly hard for about ~5 months and while I have made progress it feels like I hit a lull. It seems like to go from nothing to beginner was challenging but manageable but going from beginner to intermediate has been challenging. Have you experienced this when learning a complicated technology? I'm just wondering if this is the nature of learning a dev language. I'm not discouraged but maybe a little insecure that's why I am reaching out. Thanks in advanced for any return replies.
Comments
Also do not underestimate planning and pseudo code. A lot of new devs skip this step and they end up having to think through the design at the same time they are thinking through using the language. You should design your apps in pseudo code and then translate your pseudo code to your code. This will give you the chance to think through how it works and identify where inefficiencies are before you type a single line of actual code.
The one thing about programming however is that amount of code and efficiency doesn't always go together. For example, if you are sorting a persistent list - you could write a simple nested bubble sort and sort it every time you load the persistent file. That's probably less than 20 lines of code.
But if you have millions of rows in that file - you may probably need to write a btree indexer for the file.
Understanding the business problem and translating that into a scalable development problem is probably one of the traits that separates good programmers from mediocre programmers. And if you throw in operational considerations - that would be another aspect of that I would consider separates out good programmers.
This is really where the "art" that @WafflesAndRootbeer refers to - probably why Knuth entitled his classic - "The Art of Computer Programming".
I think what you are experiencing is really quite normal and it's good. It means you passed from knowing nothing, including not knowing what you don't know, into knowing your own limitations. That's always an important step to mastery.
If you want a learning path to take you to the next level here is my suggestion:
1. Learn C# and the principles of OOP. VBS is fine and all but it will limit you. There is a ton of VST stuff that you can do using C# that will amaze you.
2. Learn to solve standard problems with standard methodologies. A part of being a good developer is not reinventing the wheel every time you come across a problem. Find some resources that give example software engineering interview questions. There's a book from Wrox Press on this. Go through the programming questions and learn the correct answers. So learn about data structures like liked-lists and b-trees. Learn how to work with them, what they are good for, etc.
3. Learn about design patterns. These work at a higher level than the data structures and algorithmic stuff above but the idea is the same. Very smart and experienced people have walked the developer road before you. Learn from them and reuse the common patters that they have figured out for solving common problems. Look for things like Factory, Unit of Work, MVC, MVVM, etc.
Going from beginner to intermediate in software development is really about stocking up your proverbial toolbox with the things you'll learn in 2 and 3.