If an employee argues for ASP, you might fire him because this implies he's a really bad technical worker. But you wouldn't (have to) fire him because, in arguing for ASP, he hurt the feelings of the PHP proponents in the company and made them feel they have to justify themselves, provoking some to say they would not be willing to work with him in the future even on PHP projects, and that if he wasn't fired they would resign.
With PHP vs ASP, we trust people to behave civilly and allow space for debate. With men vs. women, we don't. One man's modus ponens is another's modus tollens; draw your own conclusions...
Nope, a "civil debate" about PHP vs. ASP is a waste of time. No reasonable employer will give you space for debate between the two. If there were a company-wide week-long debate about PHP vs. ASP at my employer, I would seriously question whether I should be at a company where these sorts of questions are considered debate-worthy, whether I have to justify every decision I make about common-sense things (why am I writing shell scripts in sh instead of tcl? why am I using UTF-8 instead of EBCDIC?), and definitely whether I want to work with all the people on the wrong side of the debate - and maybe some of those on the right side, who are considering the matter debate-worthy - in the future, lest they pick apart every PR I make because of their lack of critical reasoning skills. I would certainly threaten to resign if forced to work with these people.
The fact is, the primary reason someone is a bad technical worker in this era is that they're a poor coworker. Almost no projects of any significant merit are developed by a lone hero in a corner.
There's an important difference between silencing opinions that (you think) are very stupid for practical engineering reasons, and not wanting to work with the fools who hold them; and between silencing opinions because you think they are morally abhorrent and harmful just by being expressed, and punishing people for holding or expressing them.
Morality is a psychologically distinct category. Being morally wrong is not the same, is not treated the same, as being factually wrong. A core part of the problem here is that something we'd want to be discussed factually, like choice of programming language, instead became a moral issue.
If a programmer advocates for ASP in a PHP company, it's reasonable he'd be fired, although I'd hope he'd be given a warning and a second chance first. However, thousands of people across the company would not get involved, the CEO of a megacorp would not cancel his family vacation to make a personal statement, the news media would not give it prominent coverage. Nobody much would care about a not-very-senior employee turning out to have a foolish or wrong factual opinion and being fired for it. But everyone cares about an employee making a moral stand that some (including other employees) may agree with, and being fired for that.
To repeat my earlier point: advocacy of ASP, here standing for any technical or factual matter, might be very wrong factually; but advocating for ASP would not hurt people's emotions and feelings of safety.
I think that argues in favor of a swifter response to someone who is objectively wrong on a moral matter that's relevant to the company's business objectives than someone who's objectively wrong on a merely technical matter that's relevant to the company's business objectives, no? Maybe I'm misunderstanding you.
I mean, we could argue that this isn't a moral matter, but the fact is that a huge number of employees at the company do see it as a moral matter, and it affects everything from morale to recruiting to trust to retention. A warning is a luxury we have when this isn't true, but it's not one that's affordable here. To be clear, I am absolutely on board with giving him a generous severance (and a sinecure or PIP if needed to maintain immigration status or something), because I care very much about the wellbeing of all humans regardless of whether I find them to act morally. I'm not here to punish him for his immoral behavior. But the important thing is that he needs to be removed from day-to-day activities and decisionmaking at least as much as someone who seriously and earnestly advocated ASP would.
(In fact, one of the few scientifically-cited claims in the document is "moralizing things that shouldn't be moralized is bad," but there's no strong argument, scientific or otherwise, for "... and this is one of those things that shouldn't be moralized.")
1. What is and isn't in the domain of morality is a matter of culture and history and current events; if enough people feel something is immoral, that makes it immoral pretty much by definition.
2. Immoral behavior is, and in some sense ought to be, punished more harshly and more swiftly than merely being factually wrong or incompetent.
But of course people never agree on what is moral or immoral, or even what should be moralized or amoral. In particular, I believe in and argue for the free discussion of factual claims in the pursuit of truth, and against the moralization of empirically-testable propositions. (So, I agree that moralizing such things is bad).
I can give lots of reasons for why this produces a better society (as well as better science and technology), but in the end it's only a better society for those who care at all about truth (and, inseparably, about working science and technology). If someone disagrees with this on moral grounds, and feels it's better to force everyone to lie if the truth might be offensive, then I probably won't convince them otherwise.
With PHP vs ASP, we trust people to behave civilly and allow space for debate. With men vs. women, we don't. One man's modus ponens is another's modus tollens; draw your own conclusions...