Personally (m), one reason I used to hate it was because it made me feel uncertain about my sexuality. I used to think something along the lines of am I really into guys, or do I just want to be into them for some reason?. But the biggest thing that bothered me was worrying I was being unauthentic with others. I already felt like I was being inauthentic (implicitly lying to since small degree) to straight people. Once I came out as bi, and I felt more strongly attracted to women for a day or two, I started feeling like I was lying to my gay friends, too.
It no longer bothers me. Probably because I’ve been in a relationship with a guy, or because I’m used to it, or because I just care less about what others would think about how I identify. Or maybe even because I’ve met more bi folks.
Well, I can think of two reasons immediately. The first is in hermetic testing environments, where you may have two tests where you’d like to see the same entity. You can’t always know the order in which tests execute. That means that either seeding operations should be idempotent, or you’d have to handle setup outside of the individual tests. (Which makes the tests, overall, harder to read.)
Another reason could be for resiliency. You may add a retry mechanism into your code in the frontend, to increase resiliency. If a request returns a 500, you don’t know if the entity is created. (The server error could occur in post-processing.) You either have to rely on the creation to be idempotent, or you have to make an additional round-trip. Using a create-or-update mechanism reduces latency and simplifies error-handling code.