My suggestion is to research and experience every video game that is similar to the game you want to make. Then go out and play some games that are not related. You want to play good games, bad games, popular games, underdog games... you want to be an expert on games, gameplay, game mechanics.
And the key is... pay attention to mechanics, to design. When you get frusterated... try to figure out why, and how to go about fixing it. When you are having fun... figure out why.
Those are basic tips.
I got my start making maps for Starcraft... and I carried over to Warcraft 3. Thats where I learned about design and coding. Looking at other people's work is a great help for learning the ropes.
As for how I go about it now... I spend lots of time just planning everything out in advance. I think about my goals, how I want the player to feel, what are the game mechanics I want to be prominent.
For example, in designing a Tower Defence game: I will first decide what type of TD I want to do. How many towers should there be, how are the enemies organized? Do i want to focus on strategy... or is it a casual grind? Am I going to copy a popular format and add enhancements... or will I try something that hasn't been done before?
After I lay out the ground work... I start thinking about storyline if applicable, do some world building. I also jump in and start writing down features, and even numbers. Making a spreadsheet and filling it weapons, special abilities, tech trees, etc are all helpful in figuring out if there are holes in the design. If i get to a mental block working on one aspect, I change to another.
I realize that my methods may be unusual... but I maybe something in that explanation will be useful to you
Also, coding simple systems is pretty easy... but coding complex mechanisms is not. Look at the new Sim City game... even if you have a perfect design document its not trivial to create a highly interactive system with interconnected parts.