Hi everyone,
This is a very general question, and I apologize in advance if it's too general or too long. But I think once I can figure this out I can take my programming skills (in all languages, including AHK) to the next level. I'm finding myself in a sort of plateau: I'm confident I can quickly learn just about any programming language you can throw at me. The concepts (variables, loops, arrays, classes etc.) are all essentially the same, the only major difference being how the language expresses them. This is great - I can go from AHK to C# to JavaScript to VBA and still know what I'm doing. But it seems that to really be able to create great programs, knowing APIs is even more important than knowing how to write code. In AHK this means knowing how to use DllCall, NumPut, OnMessage, "G-Dip" etc. but in other languages it's even more important.
In my experience so far, this seems to mean either:
1. Spend hours on MSDN (or Java's "Docs" or whatever), dig around endlessly and pray that someday you can make sense of it all
Documentation websites like MSDN are great for reference purposes. They're the Wikipedia of programming, and I've occasionally found some good stuf on there. But they seem to be more for reference than for learning... unless you're the kind of person who learns by memorizing entire databases of information, in no particular order. :lol:
2. Go on YouTube and learn how to get something done in half an hour, but never learn half of what can be done
This is a bit more helpful, depending on who did the video. This has been my preferred method of tackling a project involving code I haven't used before. It has obvious drawbacks - it can be dated, the guy may not speak English that well yet, and there's no time to get into any detail at all - but in general it's worked better than #1.
3. Just start writing code, blunder into the project and get bogged down in trying to figure out the latest brand of error.
I hate to admit it, but I do this way too often. For example, I started a project awhile back that threw some kind of threading-related exception. I know what a thread is and get the general gist of how they work, but the exception was new and bizarre to me. So I go back to #1, and eventually found my way to this page... and end up more confused than before. Apartment State? My apartment's in the State of Florida, but what the heck does that have to do with my code? :lol:
4. Get old.
By using the same few APIs over and over again (WinForms in C#, for example), they eventually become more familiar gradually over time. I know more now than I did last year, so maybe by 2077 I'll be that much better. :lol:
But for now, I can't seem to find a straightforward approach to tackle this 90-degree learning curve (more like a "learning wall"). But of course, many programmers have done it, so logically it can be done. So my question for is, how do you do it? Where do you even start? Did you have to take a class or buy books, or attend workshops or something? I'm glad to put the work in, and I realize to get good at anything it's going to be work - but it would sure be nice to know I'm actually getting somewhere. If there's a better way than what I'm doing, I'd like to find out what it is. Then maybe I can stop running around in circles like a mouse in a maze, lol.
Thanks.