It's been my experience that most people don't have success with teaching dogs cues (commands) because they begin by assuming their dog understands the meaning of the word "come" or "sit" or even his name, along with the behaviour associated with the cue (command).
Before teaching any behaviour/cue you want your dog to do, take a step back and first think "gibberish". What do I mean by that? If you begin with words that makes no sense to you - you will have a better understanding of the position your dog is in.
It's very challenging to pretend you don't know the meaning of words when speaking to your new puppy.

When I used to teach classes I'd give an example of what I meant. I asked for a volunteer and then I'd say "fliberty gibbet". I'd repeat that one or two times, my frustration at lack of response increasing each time. The volunteer would look at me, head tilted, eyes round, slightly uncomfortable smile, raising hands in the air as if giving up. Why?
What's wrong with that person? Is he ignoring me? Is he being defiant? Is he trying to dominate me?? Is he stubborn?

I was speaking a language he didn't understand and he had no idea what was expected of him. In my fantasy world "fliberty gibbet" means sit on the chair. Repeating it over and over did nothing to help him understand the meaning of the words. Raising my voice simply created stress. 
Only when illustrating the behaviour I expected did I see any sign of understanding and then relief as he finally understood what was expected.

Dogs are not stupid, stubborn, dominant, or ignoring you - especially as puppies learning English as a second language. Neither are adolescents or adults if they have never been truly taught a vocabulary. Dogs are brilliant at guessing, reading body language and understanding context. They often figure out what you are asking by employing all of the above skills.

Take a step back. Think "fliberty gibbet" when you are using cues. Ask yourself if you truly taught your puppy or dog the behaviour associated with the cues you use or did you just assume he understands?