Stay is a behavior that all dogs should understand and be able to perform. Asking and doing can be at opposite ends of the spectrum as far as a "stay" behavior is concerned. Many dogs quickly learn that stay actually means nothing. They are told to stay but the word itself is never enforced so the true meaning is never learned.
Stay: to spend some time in a place.
As a dog trainer I work hard to ensure that my clients learn what stay means. Once my work is done and I leave the dog and owner alone it can all be undone in the blink of an eye. Stay is an exercise that I consider to be a very serious one. When I say "stay" I mean it. It means that you do not move until I say so. A solid stay takes a great deal of training practice.
The stay must first be taught without distraction so that there can be success and a clear understanding. Distractions and environmental changes need to come once the meaning of "stay" is fully ingrained. Distractions and environmental changes should be introduced in small amounts and at separate times. Add too much and you set your dog up for failure.
Baby steps of success is the quickest way to big time achievement. Never call your dog out of a stay, especially in the beginning. Calling a dog out of a stay opens up the possibility of future calls and not staying. Always return to them and only use one predetermined word to release them from the stay. Treat and praise while they are in the stay, not after they are released. You want to create a very positive association to the stay, not the release.
Stay is very easy to teach; although it is time consuming to impact a rock solid stay but well worth the effort.