Any time you teach your pet a new behavior, you should start in the most boring and controlled environment possible. Just as you wouldn't expect a beginning gymnast to learn how to do cartwheels by going right into an aerial cartwheel on a balance beam, you shouldn't expect your dog to deal with multiple distractions while learning a new skill.
Think of behaviors as being split up into skill levels that range from very easy to extremely difficult, and always start training at the easiest level possible. When you can, begin training new behaviors indoors, ideally in a small room, until the skill is fluent enough to be practiced in larger rooms. Gradually move to larger areas indoors, and then into the most boring outdoor areas possible, before practicing on walks or in other exciting environments. The more gradually you build up, the faster the training will go in the long run, since you won't have to go back and "retrain" earlier stages.