While practice is the key, there are some actions we can take to ensure we get the most value out of our practice:
Learn from specific examples rather than abstract rules.
Provide feedback while the action is active in memory (i.e. immediately). Try again while the feedback is active in memory.
Practice a skill with subtle variations (such as varying the force of your pitch, or the distance you are throwing) rather than trying to repeat your action exactly.
Space your practice (math, textbooks, for example, trend to put similar exercises together, but in fact they would be better spaced out).
Allow for interference with similar skills: if a new skill contains steps that are antagonistic to steps contained in an already mastered skill, the new skill will be much harder to learn (e.g., when I changed keyboards, the buttons for page up, page down, insert etc., had been put in different order – the conflict between the old habit and the new pattern made learning the new pattern harder than it would have been if I had never had a keyboard before). The existing skill may also be badly affected.
If a skill can be broken down in to independent sub-skills, break it down into its components are dependent, learn the skill as a whole (e.g. computer programming can be broken into independent sub-skills, but learning to play the piano is best learned as a whole).