If you've never programmed before, then get yourself Game maker. Seriously.
Start simple. Game maker is fantastic as it lets you mess around with game development without needing to get your hands dirty in hard code. When you've messed around with Drag'n'Drop, then you can use GML (Game Maker Language) to start coding your games and messing around with it. If you have fun with game maker, then you should really enjoy game development as a whole.
After GM, well, that's where things get complicated. To me, it really comes down to two languages - c++ and c#. c++ is alot more complex, but you're given alot more flexibilty. c# isn't that much slower then c++ at all, and you're given all the .net libraries, XNA, and so many other useful items. Of course, this means that you're a little restricted to Windows, although you can mess around with Mono, one of my favourite games (
Osu!) is still yet to be ported.
If you love GM's simplicity and don't wish to make your own engine, I highly suggest you give unity a shot. You can code in C#, Javascript or "Boo" and it's not that difficult to get 2D games going on it once you get some things sorted out.
However, the best advice is simple.
Don't give up!and also
Don't bite more then you can chew!and also
Don't be afraid to ask for some help, but don't ask how to do every little thing either. You'll never get anywhere doing that.
and finally
READ THE FLIPPING DOCUMENTATION, TUTORIALS AND OTHER ONLINE HELP! Use google!Game development is torture. It'll make you wish you've never been born at times, especially when you go down the more advanced routes such as c++, or making your own engine out of OGL/DX/etc. Until you're confident enough to tackle them, don't look at them, don't even think of them. Use the cross platform libraries such as SFML and SDL. They'll save your sanity as well as massive amounts of time. I believe they can be used on both c++ and c#.
Game development is also amazing fun. It's cool watching your game slowly shape itself, and it's an amazing feeling spending hours working on some complex system then seeing it all come to life when you debug and play it. You're creating something that's uniquely yours, and no one can take that away from you. No one. It's just kick-ass awesome seeing the thing you've created take life and play, and nothing beats hearing other people enjoy your game.
Game Development - It's one hell of a ride, but you've got to work for it.
All of that is very good, as well as the other posts you guys spent a lot of time writing for this thread.
The stuff I've been thinking about lately is that if you're serious about "real programming" (ala, C++, C# game dev or programming in general), the next step after being comfortable with your language is
. Learn them. They will (1): Make it a lot easier to communicate your intent to other developers ("I'm using an Observer pattern for..."), and (2) They keep you from reinventing the wheel in a way; they're just logical patterns for how to get shit done.