I'd agree very much with what robbieduncan said above, you have to start off with something simple and work your way up (patiently!

)
When you're starting off, it's far more worthwhile to pick an easy project and finishing it than trying something more ambitious and getting bogged down in the nitty gritty. The morale boost from finishing your first game - regardless of how simple it might be - is very rewarding!
Obviously, you need to learn the basics of programming, but then I'd recommend a simple, 2D sprite based game. Most games like this have a simple overall structure:
while (game isn't complete)
get user input
calculate new player position
calculate new other-sprite positions
detect collisions
draw player & sprites
Getting user input is easy, there are various documented ways of reading which keys, modifier keys (Command, Option etc..) are pressed, as well as mouse movement.
Calculating the player position simply involves changing the co-ordinates you have stored for the player, if the right arrow is pressed, increase the x co-ordinate by a fixed amount, etc.
You'll have to figure how other moving sprites in the game determine their next move - do the little green men rush straight towards your character, and how fast, or do they move randomly about?
Then you need to detect collisions. Is your character trying to run through a wall? Does one of the little green men's bullets co-ordinates coincide with your player's co-ordinates?
Then, based on the previous steps, you draw all the sprites in their current positions. If they're all static sprites (like, say, spaceships), it's quite easy. If they're animated (such as a character walking), you'll need to have several pictures("frames") of the character, and keeping drawing the next one while he's moving.
There are other factors to consider then, such as how fast will the game play - you'll (eventually) need to add some kind of timer functionality so that it plays at a regular rate on both fast and slow computers. You may want sounds, and background music.
One piece of advice, try - as much as possible - to read in settings like 'player speed' from a text settings file, that way you can just change it by hand and run the program again, instead of having to make code changes.
Best of luck!
(Incidentally, I'm told one of the best ways to get into 3D programming these days is to start by making game mods for games like Unreal Tournament, or Quake 3. Once you have a handle on programming, it might be worth a look).