I don't usually train my dogs to 'Stay'. I like the 'Wait' command better.
Stay means "freeze"... don't move a muscle until I return to you and release you. The reason I don't teach it often is that most people use it incorrectly and indiscriminately, and I see more dogs breaking a stay than understand it. They inevitably get corrected for breaking the stay, unfair and not needed. Not to say I don't teach it, but it requires some very specific parts, broken down so that the dogs understand it well and the handlers are using it clearly and with their own understanding of what we want the dogs to do.
"Wait" means don't move forward. When I tell my dogs to wait at the front door, it means you can move about the house, just don't move forward... don't follow me out the door, the gate, up or down the stairs. But it doesn't mean "freeze".
Yesterday I was working with a mini GoldenDoodle, Tillie, our Lagotto puppy now 5 months, and Glory my English Shepherd was out with us in the back yard. Tossing the frisbee, Glory has a lovely retrieve. Not perfect, but she'll find it, take it, and bring it to hand 90% of the time.
I had just tossed the frisbee, and as Glory was bringing it back to me I noticed that the Doodle had just pooped. Right between Glory and me, and Glory was about to step in it, dancing around with the frisbee she so proudly brought back to me!
"WAIT"! "BACK UP"! Good girl!
Stepping in poop and ick averted, I was so proud of my girl, and so happy I had taught her those two commands.
There are so many reasons I love these two commands, and I'd never had to use them for that reason before, but let me tell you... short of "come" and "down", they are the ones I use most often, and probably always will!