@ApochPiQ
I don't know. I don't mean to pick you apart and judge you, I just find the way you look at programming to be very different than how I view it, and it interesting to me in that respect. You sound like you spend far too much time trying to remember every last detail before moving on compared to how quickly I like to make progress. Again, I'm not judging you, I'm just really interested.
I moved onto Programming with the Win32 Api after about a day of learning C++. Don't get me wrong, I take programming very seriously. I know when I've gone too far and need to take a step back and prepare, but I also really enjoy jumping in head first, feeling lost, and figuring out a solution.
Just to let you know... I was suffering from a 4 day long insomnia when I wrote that about you... (when you go that long without sleep; you enter a psychosis until you fall asleep). By the way you've replied you've showed a lot about your character and you have my respect.
If you're interested. I would enjoy hearing more about what you do with programming. So feel free to message me if you want to. I most likely won't agree with any advice from you. Right now you have me interested. How long have you been programming and what level would you say your at? What have you've acomplished project wise?
I don't mean any of this as any kind of slight against your skills, because I honestly know nothing about you, but every time I hear that someone "learned C++ in a day" or such other extreme claims, I am deeply skeptical. I've spent many years learning C++ and still have a lot of dark corners and cobwebs in my knowledge of the language. That's not because I'm a slow learner; it's because C++ is extremely complicated and tricky to master.
I speak from the perspective of long and diverse experience, not from the perspective of just starting out and still ramping up my abilities; this probably accounts for the differences in our viewpoints. I've seen far too many beginners slap together some quick, sloppy code and proclaim themselves experts because they got something to work. The fact of the matter is, getting something to work is actually pretty easy in this day and age. There are countless resources, web tutorials, references, and tools out there, and they make it borderline trivial to "write" certain kinds of programs.
I have no doubt that you, 3DDreamer, or anyone else could take a long weekend with a reference and hammer out some interesting stuff. Maybe even a simple game. As others have pointed out, with tools like Flash available, an awfully broad swath of games can be created with relatively little programming skill or effort.
However, my advice to 3DDreamer was tailored for his interests and situations. He covered a lot of different programming topics in his post that he wants to try and learn; and once you start reaching a certain level of scope and complexity, doing good programming - and mastering that many techniques and technologies - becomes radically more difficult. If you want to be
good at something, it takes many years of dedicated effort.
Put simply, there is a vast gulf between banging out a couple of Flash games every month and writing AAA-industry-quality code. It sounds to me like 3DDreamer wants to end up in that position, which is why I cautioned him that it will take a lot of time and investment.
For clarity, when I suggested doing a single one-year project, I'm not talking about making Tetris or Asteroids or Pong or whatever else. I'm talking about picking a set of technologies, say, related to animation, and designing
and implementing all of that stuff in a complete package. Making a good game from the ground up, while learning new techniques, and polishing it all to a good degree of quality,
is something that will take a year easily - especially for an inexperienced programmer working alone.
There's a reason why major game titles take years to develop. It's not because we're unproductive people.
There is absolutely great benefit in jumping in and learning. I understand this probably better than most on this forum, because I started programming before references and tutorials and tools were widely available. I had to learn my first several programming languages by trial and error and trying to decipher compiler messages for hours on end with no way to find out what they meant; so believe me, I fully appreciate the learning experience. I'm not advocating that people memorize the C++ Standards documents and half of the MSDN Windows API reference before writing a Space Invaders clone. I'm saying that when it comes time to produce work that will gain attention and respect from industry developers, you need to be ready to sink many months into a single project.
More than that, my recommendation to 3DDreamer was to learn to deal with large scale projects, precisely because he wants to end up working on them eventually. When all you know is slapping together a 3 week project and shipping it, you miss out on the sensation of working for years on something before it is done. If you've never done anything long-term, it is exceedingly likely that you will burn out and get bored long before finishing a larger project. That's no way to get a major game title to your name.
You're free to disagree with all of my opinions, of course; as I said before I know nothing about you so it's possible you're correct to disagree with me. But I'm coming from the perspective of 20 years of programming experience, three shipped AAA game titles (not including 2 that never made it), releasing several award-winning consumer software products, leading a moderately successful open-source programming language project, and a senior position working on one of the biggest MMOs of all time. I won't rule out the possibility that I'm wrong about some of this, but it'd be a hell of a shock ;-)