Heh, well, if you don't mind me being tangential. A friend got me into it around middle school. His father programmed software which was eventually bought out by a company that works with substance abuse clinics and his brother, within a few years of our friendship, got a job at Microsoft. Anyway he'd been programming stuff for a while when he introduced me to it. He taught me the basics and shared really cool programs he'd made with me. Somewhere around the end of middle school, I learned there was a class at the High School on programming. The teacher was nice enough to let me install Visual Basic (6, I think) that was used in the class to tinker with on my own. I was really lucky to do this because by the time I reached the correct grade to take the class, it was no longer available, probably due to lack of interest (South Carolina... enough said?). So anyway I just kept taking classes whenever/wherever I could, got into college Comp. Sci. program and the rest is history. Basically start with something simple, and try some free online tutorials. Some starting concepts that are important: Variable Typing - in some languages variables are just names and will hold whatever you want them to... text, a number, whatever. That's weak typing. Some languages you define the type of variable and then it will ONLY hold those values. Your integer variable will only ever contain whole numbers etc. This is strong typing. The definitions aren't as exact as that... basically strong typed languages can be more rigid, but in return provide some automatic error checking (You can't put your String (text) in that Integer!) which a weak typed language would only stumble over once you run the program. Data Structures - These are ways of organizing data. A queue is like stuff waiting in line. It comes out of the line in the same order it entered the line (FIFO - First In, First Out). Stacks are the same but the order is reversed (LIFO - Last In, First Out). There are a lot more complicated structures, but mostly these will be built into default libraries so if you know one which would be useful you don't have to write/rewrite it yourself. Object Oriented - Basically a focus on defining "objects" which contain variables in a set structure (data structure!). If you define a Ball object as having a diameter, a position, and a direction, then all Ball variables/objects/instances will contain those values. Object oriented programming ideals can be generally used independent of language but some are built specifically for it. Language API - As I mentioned above, this is a list of functions/methods/tools you don't have to make yourself, they come included in default libraries the language supports. Very useful once you've got some programming foundation so you understand the lingo used. There are a lot of resources available to ease you in. Good luck!