I have complained in past that the stealth rules in 5e (and honestly, in every other game I've tried) are woefully underspecified. I was very wrong though; the rules are not underspecified at all, my expectations were wrong. To be fair, I've yet to meet a DM that handles those rules well.
In D&D 5e, Stealth is the name of a skill, and it is used to answer obvious questions. Can you sneak past that guard? Can your party avoid attracting attention as it traverses the Underdark? Can you hide from the patrol behind that barrel without them noticing? It is often opposed by the perception skill of the one that might do the noticing, and it's typically based on the Dexterity ability score.
The problem is that it doesn't specify how to do many obviously reasonable things - by the rules as they are usually interpreted, you literally cannot sneak up 'behind' someone unless they are standing next to a place they can't see into. You cannot perform the traditional fantasy technique of 'sneaking up behind someone and cutting their throat', and you can't take advantage of somebody's attention being drawn by a commotion to run past their post.
Decent DMs do allow those things to happen, of course. The rules actually do explain how to make that stuff work - it's in the Player's Guide. It's just not filed under 'stealth', because it's the same rules that the whole rest of the game uses for everything outside of combat.
Many video games, and one massive success in particular, have modeled the act of being stealthy as some kind of cloaking device - when you're 'stealthed', you can sneak basically anywhere, and people will not notice you unless you step on their toes by accident. That attitude has infected many D&D DMs, to the point that they think of 'hiding' as 'becoming stealthy'. Hiding characters cannot move. When you hide, that means you are finding a good place to hide, getting inside/behind, and staying there. It's been conflated with 'getting out of sight', to the point that there is a somewhat confusing mechanical interaction where a character steps around a corner (so that nobody can see him), hides, and then steps back around that same corner and shoots somebody. "BAM! Never saw that coming, did you? Didn't expect me to shoot you from that same place you just saw me go!" It's ridiculous.
A character gets advantage when making an attack if the subject of the attack could not predict that he would make that attack, or could not predict where the attack would come from. Yes, if you are not visible when you make the attack, then of course they cannot predict it. But if you step around a corner and shoot somebody, they also cannot predict that.. unless they just saw you there 3 seconds prior. So, that halfling that wants to hide behind his ally every turn to make a sneak attack can do so, but only if it's not utterly predictable who he's going to attack (or if the target is sufficiently stupid to lose track of him once he's not visible for a few seconds).
This is further complicated by the fact that turns are a lie - the conceit is that the characters are supposedly all going at roughly the same time, but actions happen to be resolving in initiative order. Rounds are 6 seconds long - a character dodging behind a pillar and popping out 1-5 seconds later to shoot someone very well might be surprising them, as long as that someone has enough else to occupy their attention that they aren't going to track that hiding character. It becomes a DM judgment call, which makes it hard for the player to make tactically sound choices.
So here's what I do: the 'Hide' action is actually two different actions, with two different meanings.
It's an action you can take to make yourself hard to find or notice, but the point of it is to find a good hiding place and use it well. When somebody uses the 'hide' action in a place that might have enough debris that they actually could hide in it, then I'll assume they find or create a good place and use it. That ability check is Dex-based normally, but it'll be Wis/Int based (and they'll have advantage) if they have several minutes to prepare a good place to hide.
It's also something they can do in combat, which is a different thing. If a character hides in combat, they are not 'becoming hidden', they are making themselves difficult to predict. If they dodge behind that pillar and 'hide', the enemies don't lose track of them, but they do lose the ability to see what the character will do next - the character will have advantage stepping back from around the pillar, because he could step around in either direction, and at any time in the next 5 seconds. If you don't Hide when you go behind the pillar, that means that you didn't take steps not to telegraph your next motion - that same enemy could tell where you are about to show up, and could guess roughly when you will shoot that crossbow. No advantage. Additionally, if there is only one target, and only one place to shoot from, you can't get advantage in this way - they are not surprised by your shot if they knew who you were shooting and where you were shooting from, despite not knowing exactly when you would shoot at them. They're aware and wary.
The thing is - there are other ways to cause that to happen, and they should all work. If you run behind a wall, and then dash 30 feet to the other end of it and shoot someone, they shouldn't have expected you to shoot them from way over there. If you appear to be holding a jug of wine in each hand (from the disguise spell), but then you shoot them with two hand crossbows, that should surprise them. If you ready an action to go off when some really major distraction hits (when your Wizard's fireball lands, for example), you should often be able to surprise somebody just because they're really distracted, perhaps after a perception check on their part.
There's one thing I don't do. When somebody is trying to sneak up on somebody else, they are not 'hiding'. They are trying to do something stealthy, and a Dexterity (Stealth) check is warranted, but they do not need to be 'concealed'. Instead I need to assess the difficulty of sneaking up on that target, and give an appropriate DC based on the awareness of the target and the terrain being traversed.
Further, when that sneaky rogue/bard/wizard reaches their target and wants to sneakily kill them, they do not make an attack roll to stab them. Instead, they make a Dexterity (Sleight of Hand) check to sneak their knife up to the target's neck and cut their throat, assuming that's possible (if the target is wearing throat armor, or doesn't have a throat, or is incorporeal, then obviously that's not an option. If the PC doesn't realize that it's not an option, then things will probably go badly for them). And when you cut an NPCs throat, it typically just dies.
We don't even use initiative for that, unless they fail one of their checks and the guard notices them.
A substantial fraction of the reddit thread seems to think that I am advocating this approach as alternative rules. I am definitely not saying that - I'm explaining how I use the existing ability check rules to handle situations that I think most DMs try to handle via rules interpretations ("you don't have concealment", "he is facing all directions", etc). I was trying to give examples of how I'd handle things in specific relevant situations, not give rules for how those situations ought to be handled.
It is my firm opinion that stealth (along with a number of other skills) should always be handled narratively, adjudicated based on the description of the situation and the characters' actions. The reason no system has comprehensive stealth rules that work is because the situations in which one uses stealth are so varied that writing rules for them is impossible.