When you first start learning to program, there are a bunch of easy mistakes that make you waste time or lose motivation. Here is a list of my Top Ten Tips for new game programmers, which might save you a lot of time and trouble:
1. Start small
One of the all-time biggest mistakes for new programmers is to choose a massive project to be their first game (like a complete RPG). I know it's sometimes hard to hold yourself back, but a lot of people (myself included) have wasted time by trying to take on too big of a project in the beginning. Start with small, simple games, and work your way up to the big league once you know what you are doing.
2. Don't just copy and paste tutorials
When I first started learning to program, I fell into the bad habit of just copying and pasting tutorials instead of typing everything out. This might seem like a good idea to save time, but believe me when I say that the best way to learn to program completely on your own is to actually type out every single word. The typing keeps you more focused on the code, and the repetition drills it into your brain so you never forget it.
3. Program games that you actually want to play
This tip sometimes goes unnoticed, but try not to fall into the pit of making average, boring games. Making games is about the same thing as playing them - having fun is at the core. If you don't enjoy the game, neither will your audience. Plus, making a fun game keeps you motivated.
4. Don't worry about perfect programming and performance at first
Trying to follow all of the "rules" for programming sometimes just trips you up in the beginning. Unless you are making a professional game, it really doesn't matter if you structure your code like a newbie, or don't get 100% perfect performance - most of the time, no one will even know. (But don't ignore best practices altogether - they are very important to keep in mind as you progress.) Programming "Purists" might disagree on this one, but while you're starting out: if it works, it works, and that's good enough.
5. The more people (or beta testers) who play your games, the better
I spent a long time learning and programming games without having any real friends or family try them out. For one thing, it makes you feel accomplished because everyone is always impressed, and you can also learn a lot about how to improve your game just by watching them play and asking them for suggestions. Asking around online for people to beta test or review your games is also a great way to improve them.
6. Stay focused - Have a plan
Just like anything else, it is easy to get distracted when you program - this has been a HUGE problem for me in the past. How can you stay focused on the job? Plan out everything first with a game design document so you aren't wasting time wondering what to do and getting sidetracked. Also, find a good to-do list application - or just use paper and pen. Another way to stay focused is to collaborate. Knowing that someone else is waiting for you to do the work, means you can't afford to waste time being distracted.
7. People want to help you - just ask nicely
Forums are a great place to learn and look for help. (Most) people online genuinely want to help you, as long as you ask nicely by introducing yourself, explaining your problem, and using decent spelling and grammar. Don't just say what type of game you are making and tell people to do all the work for you - that isn't how it works.
8. Don't rush into overly complex terrain
Don't feel like you have to keep making more and more complex games with more difficult code before you are ready. If you go in over your head, you'll probably not know what's going on and you will just be wasting your time. Take it slow, there's no rush!
9. Get into the mindset that you WILL succeed
As Henry Ford once said: "Whether you think you can or you think you can't, you're right." If you keep thinking, "Oh, everyone else is better than me, I'm never going to be able to make a good game like them" then you probably aren't going to succeed. But if you've got passion, determination, and you don't give up, you are going to be a pro!
10. Collaborate, join the community, enjoy working with others
There is a great community of game devs out there - take advantage of it! Join forums, read and respond to blogs, and get to know other developers. You'll end up learning a lot from some very talented people and maybe even get to work with them. If you are passionate, hardworking, and creative, you will end up being recognized by the community for your talent, which is very rewarding!