"Practice" is definitely solid advice. As you do it more and more, you'll start realizing flaws in your design earlier and earlier. You might start out with some simpler games like pong or a tetris clone.
If the code is too hard to manage, spend some time thinking about why that is. If you had it to do over again, what would you do differently? Do you think you could salvage that with some refactoring or is it too far gone?
Spend some time reading about software design techniques or good programming principles. Yeah it's boring, but they have some solid ideas.
Spend some time thinking about the proper name of a variable/class/function before you start using it.
And I recently replied to a thread that meandered through how I go about refining a design. You might find it useful?
Anyway, I don't think there's some big picture you're missing. Keep at it.
- Eck