Programming discussions

If language is not correct, then what is said is not what is meant; if what is said is not what is meant, then what must be done remains undone; if this remains undone, morals and art will deteriorate; if justice goes astray, the people will stand about in helpless confusion. Hence there must be no arbitrariness in what is said. This matters above everything.

—fsbot, citing Confucius

There is initial alienation when it comes to unfamiliar technologies, I should overcome it to consider this objectively.

—a coworker

It seems that virtually every programming-related concept is controversial, so the discussions are often not easy, what makes it important to learn how to handle them.

Since it's an easy target, internet trolling is very popular, what makes it even worse. Add many different reasonable opinions, and applying the principle of charity would become quite tricky: it's almost as with the topics which the common etiquette suggests to avoid entirely. Flaming appears to be common as well, particularly around topics with relatively low entry barrier: probably it is caused by overconfidence and arrogance, which often pass as one gets humbled by more advanced topics. Or it takes more interest in the topics and less interest in flaming to advance in the first place, or people just grow to be more polite – but in any case, that's the observation. And both trolling and flaming are occasionally used to accuse an opponent of, if one doesn't agree.

Unfortunately, those things may discourage communication, while communication is rather useful for—among other things—learning at the times when one gets stuck, needs a clarification, and/or fails to find answers on their own, as well as for accidental discovery of new subjects.

Freenode channels have pleasantly surprised me, in that people were mostly nice and friendly there. It worked well to just ask about things on dedicated channels, and to help others the same way. It is not completely free of emotions (there is occasional trolling, spam, and other kinds of impoliteness), but it's very helpful otherwise. Some people were very considerate and helpful, even surprisingly so. Then they've turned out to be IRC bots. Kidding, though IRC bots were also nice. To be fair, when I've got used to it, I've started noticing more of less pleasant bits here and there, but perhaps that's what usually happens; yet it's still pretty good.

When proceeding from basic request-reply pattern to discussions, it's seemingly easy to follow the common sense rules: be polite and considerate, constructive, try to understand the other party, do not turn a conversation into a flamewar, stay calm when others do otherwise, etc.

Emotions may try to screw it up, even cheerfulness may bring about inappropriate jokes (e.g., now it's tempting to write that those are "jokes about dead things – like <some technology that is not in fact dead>"). Right as I'm writing this, it happened on #emacs – unintentionally, because of one's attempt to make a joke. So plenty of effort should be put into controlling those, and apparently plenty of practice is required to make better jokes.

Even once every participant is polite, patient, and open-minded, there are things like opposing views based on the sum of one's previous experience that is virtually impossible to convey. In addition to that, there is an issue with semantics: people may agree on some statement, or argue whether it holds or not, while understanding it differently. I've been writing down a short list of the vague terms (partly homonyms, even) that seem to be prevalent and confusing in such discussions, but removed it from this note, since that's probably also controversial: what one may call a "buzzword" may still mean something for others, and that's a flamewar topic by itself sometimes. Perhaps just worth mentioning the simple and easy distinction.

One more thing that seems to be helpful is the "strong opinions, weakly held" strategy. And another somewhat related one, "Keep Your Identity Small". #git: guidelines for helping contain a few nice advices, too.

All in all, communication is pretty hard, though gets easier if participants are genuinely friendly. And when they are explicitly hostile, not even basic things would work.