I'm a system developer, and have been for 12 years now. I thought I would comment on some of your points here.
Tarnix said:
1) Learning that most programmers use at least 5 programming launguages in their job everyday.
5 Is probably overstating it, but yes, languages vary. But a language is just a tool to get the job done. You will like some more than others, but you pick the one that gets the job done. Sometimes you might have to use a specific language due to project restraints, but more often than not you have freedom to choose.
Tarnix said:
2) Finding out I forgot most of my HMTL/JAVA and VB after being halfway thru C++.
This is normal. I consider myself fluent in c/c++/c#/x86 assembler/Java/Ecmascript and I have used a handful more. Yet, I don't remember the specific syntax for things in all of these. You look that up when you need it (and Intellisense is your friend). As you learn different languages you realize that the specific implementations of things might vary, but the ideas stay the same.
Now you are learning c++ and the ideas behind object oriented programming. In the future you might be doing a project in c# and find yourself asking "hmm, I wonder how I do virtual methods in this language" or "Can I do operator overloading in c#" or "Can I nest constructors somehow" and so on. You don't need to remember the syntax for any of these things in any language, you look that up if you need it. The ideas are the important part.
HTML, by the way, is a markup language not a programming language. It does not perform, it describes data. And over my lifetime I have probably written a DVD worth of HTML, yet I still have to look up CSS information every single day.
Tarnix said:
3) Learning that you must continue to learn a new laungauge every few years for the rest of your life in order to stay competitive.
This is an overstatement. New languages pop up quite often, but not all fields use all these different languages. The languages prominent in scientific research are not the same as those used by web developers, which are not the same as those used in game development and so on and so forth. So when a new language appears you only need to concern yourself with that if it is in your field, and then again, it is only a different syntax once you have the main ideas down.
Major revolutions come around rarely. Object oriented programming was one, and a few years from now we will probably see an influx in the ideas and methods surrounding functional programming, since multiple cores/processors are dominant and we need code that can take advantage of this.
Tarnix said:
4) Doing maintenence on someone elses code who wasn't taught c++ properly, and just has it jerry-rigged to hell with gotos and no structure gives me a head ache from hell.
No argument there, maintaining other people's code is a PITA. The same with debugging code you wrote yourself a time back to locate some obscure bug. I don't like it either.
Tarnix said:
5) Building, compiling, rebuilding, compiling, taking 4 hours for a simple 100 lines of code, then imagining having to debug a program with 500,000 lines of code.
It doesn't really work like that. Big projects are split into layers to keep them manageable. You might have a project for data interaction, another for the API and a third for the UI, to give an example. The first two might be separated into DLLs and built as independent projects.
Tarnix said:
6) Knowing you probably will never get a pay raise, because young kids comming out of school will take your job for less money, or your job can be out-sourced to India or china for cheaper.
I don't know why you think you will never get a pay raise, that is just .. random. However I can assure you that no "young kid coming out of school" can just sit down and replace me. Do you think that someone who has been doing math for 10 years can be replaced by a random newly graduated student? If not, why should programming be any different?
Outsourcing happens, but mainly in companies that do not really do system development. Cap Gemini might outsource if they need an application built, but that is because they are not a software developer. Microsoft or Blizzard on the other hand does not outsource, because making software is what they do.
Tarnix said:
I also did not find writing code fun
Now this IS a problem. If you do not enjoy sitting down and solving some problem on a computer, or seeing how much performance you can squeeze out of so-and-so many resources, then programming might very well not be for you. I find it a little odd that you enjoy math though, because it is very analogous work. Specifically game programming, as you have mentioned, is very math-intensive. AI and Graphics programming is applied mathematics.
If you enjoy the problem-solving part and are just fretting about the idea of all these languages and syntaxes, then I suggest you do not give up quite yet. The languages fade to the background after a while.
k