If you personally want to make video games in of themselves, Narrative as well as Level Design Theory take a bit of experience. Try making a custom level in SourceSDK (free on Steam with a Source Engine game like Half Life 2). Make a really simple mod, like a one-map story based thing. Single discipline concept like exploration, platforming, escape or shooting.
Your first map will fail as will your second, but as you make them you'll start to get a better feel for the whole craft. Eventually you'll be able to make pretty cool stuff with just the tools available out of the box with something as simple as SourceSDK and the assets from Half Life 2.
But once you know how to make a fun and engaging level, then you'll want to make custom models and animations to make it even better.
If you're capable enough, good on ye mate! I don't know much about Programming, but I do know a few things about Modeling and Animation. Your weapon of choice for both of those would be probably 3DStudio Max, Maya or Softimage XSI. If you're going to make decent models, get good at making them both high quality and cheap at the same time for video games. (See if you can make a decent character with 2 fingers on each hand and a detailed face while keeping the entire model under 2000 polygons).
In order to get good with animation, start with simple animation. On paper if necessary. Get a a feel for the important things, weight, flow, curves character, that kind of thing. Animation is a skill that requires a lot of practice. Animate something every day.
However those aspects are for people who already know what they're going to make in an already planned pipeline. Programs are tools, not canvases.
A game can be created in thought by answering the question: "How do I want the player to feel when they beat my game?"
The production begins when once you have the answer to that question, you ask "How do I get that reaction?"