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
-
WafflesAndRootbeer Member Posts: 555Programming/coding/software development is an art and a science. You either pick things up quickly, over time, or not well at all and it takes time to figure out a lot of the stuff before you even know where you are in the long-run.
-
N2IT Inactive Imported Users Posts: 7,483 ■■■■■■■■■■I've read some post from actual developers most of them said it just takes time. Obviously some pick it up quicker than others ,but really the syntax and programming isn't the hard part. It's actually thinking out the solution and how it's going to work. The coding part isn't all that hard once you know the syntax and library. I've been told on several occasions the hardest developer to find is one with good design skills and UI skills. Writing code isn't "hard". Lot's of people can build houses (developers) but not many can design good houses. I'm struggling with making my code not so long and more efficient. Speed and efficiency along with design is the most challenging part for me. Hopefully that continues to come.
-
NotHackingYou Member Posts: 1,460 ■■■■■■■■□□For now, focus on getting it to work. Once it works, go back through it and figure out where it is slow/less than optimal and re-write it. Keep up with this process and your experience will build and you find that the mistakes you were correcting aren't happening as often.
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.When you go the extra mile, there's no traffic. -
paul78 Member Posts: 3,016 ■■■■■■■■■■I'm struggling with making my code not so long and more efficient. Speed and efficiency along with design is the most challenging part for me.
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". -
RobertKaucher Member Posts: 4,299 ■■■■■■■■■■It's really easy when you know next to nothing to learn a lot in a short period of time. As you gain experience and knowledge you are confronted with exactly how little you know in comparison to the large body of information that you can see before you that you've got no idea about. That's really different from the people who are so ignorant of a skill that they don't really understand how much there is to master it. I can't tell you how many people I have known who literally thought that since they were able to set up and configure their consumer Linksys router getting their CCNA would be a walk in the park. Seriously. Or because they were pretty good at their school's chess club, they were actually good players. Those sorts of things...
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.