Many people think immorality is not self-defeating and needs nasty consequences imposed on it, like legal repurcussions or the community shunning offenders. And on the flip side think that morality is not very effective: doing moral actions means sacrificing getting the most money, prestige, etc, that is possible to get. In this way morality is closely tied to altruism.
One result of this way of thinking is the rich and successful are deemed prima facie immoral, and the powerless and weak are deemed prima facie virtuous. Another is that people who think this way don't whole heartedly try, strive, and want to be maximally moral; instead they are at least a little conflicted.
I define morality as our knowlege about how best to live, and thus it is effective by definition. I think the reason people shy away from this definition is if they used it then they can't see anything wrong with stealing, or with premarital, gay sex on the first date, but they are sure in advance that those are immoral, so they think my definition is refuted by contradiction.
I think it's scary that people don't understand that stealing is self-defeating even if you aren't caught and punshed. In a way, it's a denial that morality exists. They're saying that "immoral" actions are simply the ones society (or perhaps God) will punish you for, and they can't see any inherent logic in what is and isn't moral without reference to punishment.
On the other hand, I think premarital gay sex is not self-defeating, and also is not immoral. It has no negative consequences for one's life, except perhaps inciting bigots to be mean to you. I don't think we should defer to bigots; that's appeasement, and it would mean, for example, that as long as anti-semites exist people shouldn't be Jewish.