Keep Criticism Narrow

Criticism should be kept as narrow as possible. Point out the problems and only the problems. Don't expand them into personal insults or wide judgments.

Example 1:

Example 2:

Example 3:

If the person wants your opinion about their general understanding or general competence, let them ask first. Otherwise, don't volunteer it.

If a person is frustrating you for whatever reason, leave the discussion (assuming the context of a wiki) before you are tempted to express wider opinions about given person. When in doubt, say nothing.

Our primal cave-men urges to lash out in frustration or chest thumping is harmful to civilized discussion. Yes, it's hard to resist the urge, but something we must do if harmony is a goal. Lashing out will likely not change the other party to fit your desires anyhow. Harsh or blunt criticism rarely solves anything. The other party probably has some harsh opinions of you also that they are holding back. Unleashing yours will either alienate the other party, or result in them releasing counter criticism.

While the above offers some good advice, I feel it should be noted that the "as narrow as possible" depends upon the claims being made. If the argument is organized such that one can clearly identify "items C, J, and K", then those can be targeted. If not, "You don't understand any of this" may indeed be "as narrow as possible".

And, to the contrary of the claim above, generalizing a person's (lack of) understanding can indeed solve problems. It can help a third-party audience - one not well enough experienced to be properly crtical of claims - know where to review evidence with caution. It is perfectly fair to note that a person has regularly used fallacy in his or her arguments, especially if it is easily proven. This might even help the other person IF that person is not a HostileStudent and is capable of critically reviewing his or her own claims. But you can't ask for everything.

(Moved Goto-related material to ObjectiveEvidenceAgainstGotosDiscussion. The split may not be perfect because there is a bit of interweaving of sub-topics.)

In some ways this reflects the on-going issue of OO design patterns: shouldn't they be built into the language if they are known patterns? It's also an argument against try/catch language idioms: something which can be handled with conditionals and other techniques. Some argue that languages are getting carried away in the way of LanguageIdiomClutter to keep up with the brochure-checkbox Joneses. Design-by-contract and AspectOrientedProgramming are other contenders for creeping featuritise idiom clutter. Generally we want our OWN favorite idioms in the language but not other's that we don't use much. I personally like blocks over gotos in most cases, but it has not been demonstrated that blocks are objectively better using sufficient and thorough rigor.

I see from your last statement that you're once again stubbornly beating the dead horse about 'objectively better' without dealing with a proper 'better for what' angle. When you get tired of doing so, maybe we'll have a reasonable conversation on that matter. When it comes to blocks vs. gotos, I don't believe there's even much overlap in their functionality. Might as well compare, with 'sufficient and thorough rigor', which of gotos vs. car wax is better.

I'm convinced that DesignPatternsAreMissingLanguageFeatures, or at least are indicative of missing language features. If you can't encapsulate and refactor a commonly used pattern into a library, something is broken with the language: either the language needs the pattern built into it OR the language needs a higher-level feature that would allow one to encapsulate that pattern into a library. The latter is a better choice, and is where the whole idea of subroutines and objects started. RealMacros, if combined with a symbol generator, would be a usable combination for encapsulating most patterns. I would note that DesignByContract and AspectOrientedProgramming are features you can't capture even with RealMacros or functions or procedures - arguing that they're LanguageIdiomClutter seems to me like another statement of gross ignorance on your part. In addition, I'd note that your statements above are an argument for try/catch language idioms, not against them - i.e. using try/catch obviates need for common patterns that programmers usually get wrong anyway... which is why they built the pattern into the language.

Note: replace my statements above about "machine-performance" with "performance-related issues". "Machine" is misleading. --top

See Also: AttackIdeasNotPeople, HowToWinFriendsAndInfluencePeople
NovemberZeroSeven and again JulyZeroEight


View edit of February 25, 2011 or FindPage with title or text search