Going through this myself - my very best advice is patience, persistence and don't succumb to short cuts (harnesses, face things etc)
You should be taking the dog for a walk not the other way around
so every time your pup goes ahead of you, call their name to attract their attention and turn in the opposite direction. We often spend 15 minutes "heeling" and never get off the drive! The other brilliant tip I picked up at a training day last week involves a tin of sardines.....
If you want your dog to heel on your left : hold the lead in your right hand, with the rope behind your legs, that way the pup cannot go in front of you too far....put the ends of your fingers (left hand) in some nice smelly sardines, mackerel or tuna in oil and let the pup lick the fish from your fingers as you walk. Walk at quite a pace so they have to trot to keep up, change direction often so they have to "think" to keep up.
Continually say "heel" and praise when they are doing it correctly.....lots of soft verbal praise....if they pull forward, stop and wait until the lead goes slack.
I choose to use a slip lead for both methods. Take care not to lean over your pup as they may find it a little intimidating.
It does work, Coral is much better now but is still very impulsive so a work in progress