I posted on this topic last year, but think it may bear repeating.
Chess books can be a big help (if you use them) but another frequently overlooked training tool is the take back feature in a chess program. This can be really helpful in sharpening your tactical skill in all parts of the game. Use a very strong engine setting, set up the position or opening you want to study, play against the computer until it has a decisive advantage, then back up to the original position and try another line of play, do this over and over until you can play the position against the engine without losing tempo, material, or positional equality. Engines are merciless, and punish tactical blunders. This may tax your patience, but your mistakes will be fewer, and you'll gain a deeper understanding of the positions you study.