I don't like estimates for a number of reasons. First one is that if it's wrong, and it will be, it's very easy to blame the developer, make him work overtime etc.
I also had a manager ask me for an estimate because he needed something to say to his managers, he didn't care if it was accurate or not (or so he said.)
"understand exactly what they are looking for" can easily lead you down the waterfall path of plan first build after.
"Give yourself a little cushion to make sure these things don't make you late" should convince you that you're not really estimating because estimations are about how long does this job that I know take to perform. This makes it a guesstimate in which case, why bother even finding out exactly what to do in advance? Just give them your padded best guess.
I get that estimates are a necessity in many places, but I disagree that it's a skill worth learning. If anything work within your company to move towards a no estimates workflow e.g. slice stories the same or similar size. Be strict with work in progress, don't let anyone pick any story from the backlog but keep it prioritized and always pick the top one.
"I had one project that I underestimated hours on so bad that I had to do the walk of shame to my manager and tell him what happened" no developer should ever have to do this. Start blaming managers, not developers.
I agree with you that estimates are a necessary evil. It is something that a lot of developers have to deal with though. 🤷♀️ That's why it doesn't hurt to learn a wee bit about it. 🙂
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.