5

A significant number of questions on Software Engineering tend to contain phrases like "best practice" or "best pattern".

I have taken to always downvoting these, even if I do not vote to close them. My reasons are that any suggestion of "best" presupposes that folk have already worked out the optimal solution for the eventuality related to the question. No better solution could ever arise. This is clearly a nonsense situation: software engineering techniques are always evolving and improving and yesterday's "best practice" can even become today's "anti-pattern du jour".

I'm curious as to others opinions on this. Am I being overly harsh? Should I leave comments to explain why I'm downvoting, every single time? Or am I justified in this behaviour?

18

You are, of course, free to use votes however you like, provided you're not targeting specific people with your votes. Votes should be about the content, not the person posting it.

That said...

I have no beef with people asking for the "best" way to do something, so long as they define specifically what "best" means for them. Inevitably, when I ask for that clarification, I get a tautology in response: "best practice" or "most popular." That doesn't tell me what I need to know to properly answer the question.

I've said it before, and I'll say it again: There is no such thing as a 'best practice.' There is only that which most effectively meets your specific requirements." So tell us your requirements.

If someone asks for the "best way to do something" without clarifying what "best" means for them, the question is either too broad or unclear. Use your close votes and downvotes accordingly.

35

I don't think it's right to down vote questions just because they contain a certain word or phrase. I also don't think that questions should be edited to remove a certain word or phrase just because some people don't like it.

A down vote on a question means "this question does not show any research effort; it is unclear or not useful". If you feel that the question does not show research effort, it is unclear, or it is not useful outside of the specific case of the asker, then you should down vote it. If the question is extremely unclear, there's also a close reason for that purpose that you should also use.

I do agree that many people who are looking for "best practices" or specific "design patterns" for their situation don't understand the core nature of these things. Best practices are simply things that work for most (or even many) people most (or much) of the time, but that doesn't mean they work for everyone all of the time. Design patterns aren't things to be forced or used, it's a library of common types of problems and solutions that have often worked for solving them that have been seen multiple times to the point where they have been named and analyzed for easier communication.

When you come across a question asking for a "best practice" or a "design pattern", there are a few things to do.

If the question is answerable, answer it. If they have described the problem and situation in enough detail that you can present them with a good option and back that option up with facts, references, and/or experiences along with appropriate citations as necessary, provide that answer.

If the question is not answerable, leave a comment explaining why. I would link to appropriate, related questions here, on other SE sites, or articles on Wikipedia that give background and ask specific questions that I feel would need to be answered to move the question into an answerable state. If it's generally unanswerable, also feel free to cast a close vote - it's better to close quickly before it gets answers, edit the question to move it to a generally answerable state, and then reopen it so the answers are of a higher quality.

Here are some resources to link to, for various questions:

There may be plenty more good questions and articles out there, but these should be good for the types of question you bring up.


I was just brushing up on CMMI and I came across a footnote:

You usually hear about "best practices", right? Rich has spent several years attempting to change that terminology. In his experience, there is no such thing as a "best practice" -- only practices that have shown to be useful within a specific context. That same practice could be useless or even deterimental in another context...In any event, the term "best practice" is misleading. We prefer to use "successful" (or "unsuccessful") to describe practices that provide useful knowledge. Unsuccessful processes and practices are as critical to understand as successful processes and practices.

In this quote, Rich is referring to Dr. Richard Turner.

I agree with this quote - we should be encouraging people to not consider "best practices". Instead, we should encourage people to provide well-bounded contexts and describe the intended results, while sharing both successful and unsuccessful things that we have done and the contexts in which we have done them.

Changing people's words seems to be largely unnecessary since we should understand what the intention is - we should only directly change words if the original wording is not understandable or correct.

  • 4
    IMO, it's very human to think in terms of "best" and "better", etc. It's a cultural issue that could be addressed changing our language. I wonder if editing these questions replacing "best" and "better" for "suitable" or "adequate" may help to change this sort of questions. Dropping "best practices" or "industry standards" from our vocabulary might help too. Anybody with the editor privileges can contribute to this change. I have never downvoted a question if it was on my hands to change the way it was being expressed. – Laiv Jul 17 '17 at 10:22
  • 6
    @Laiv I disagree that we should drop "best", "better", "best practices", and "industry standards". These are useful concepts, as long as people realize that there is a difference between something that works for most people most of the time and what will likely provide the desired outcome in a given situation. We should usually deal with the second, but sometimes talking about general best practices is good to make people aware of things that others have found work that may also work for them. I think it's our responsibility to educate people on this. – Thomas Owens Jul 17 '17 at 10:40
  • 3
    This is a great answer. In general, StackExchange users seem to have a tendency to down-vote questions when it is clear that the asker does not understand the root of the problem. Instead of downvoting, almost all of those questions can be edited so that they become less situational and more straightforward, the way SE questions should be. When the asker is already at a loss to begin with, a downvote is not going to motivate them to formulate their question better; it's only going to motivate them to find a different website to ask the question on. – Lee White Jul 19 '17 at 6:35
  • 1
    @LeeWhite I agree. I do find it hard to edit posts for anything more than spelling, grammar, or formatting here since a lot requires context of the problem. Engaging in comments to ask specific clarifying questions or point out related questions/answers or relevant background information from reputable sources is probably the best many can do. – Thomas Owens Jul 19 '17 at 9:12
23

If I may impart one observation I gleaned on my way to 100K+:

People who understand a problem well enough to craft a perfectly-worded question rarely need to ask the question.

People usually say "best" because they don't understand which factors they should be considering, or which should be most important. These are software engineering decisions they are confused about, and this site purports to answer questions on those topics.

No, you can't give an answer that says, "This is the single best answer in all circumstances," but that's okay. That's not what they really want. The question is not a legal document for which an answer must be strictly tailored to exactly meet the precisely specified wording and no further.

You can give an answer that lays out the factors to consider, and in most cases, that can be done in a few paragraphs. If you don't think you can personally write an answer like that, see if someone else can before dismissing the question as unanswerable.

3

Question titles have to be short and pithy so please give some latitude when they are not also precise.

When reading others' questions and answers we need to be charitable

the principle of charity requires interpreting a speaker's statements to be rational and, in the case of any argument, considering its best, strongest possible interpretation.

so if you can find an interpretation of the title by which it would be a good question, then you ought not downvote without reading the body of the question to see whether a less charitable interpretation is warranted in context.

For example,

"Best pattern for processing a file in Python" might charitably reinterpreted as "What are common failure modes with files, and what language features or APIs does Python provide that make it easier to avoid/recover from these failure modes?"

"Best language to write an x" might charitable be reinterpreted as "What are the tradeoffs that arise when designing an x and which widely used languages make it easy to balance those tradeoffs?"

As an example of questions that m/\bbest\b/ but that don't deserve downvotes IMHO:

  • 1
    Although your second example ("Best language to write an x" shouldn't be down voted because it contains the word "best", it should be down voted and/or voted for closure because it's asking for a recommendation of a particular tool or programming language, which is explicitly off-topic. Perhaps a better example would be suited. – Thomas Owens Jul 18 '17 at 16:41
  • 2
    @ThomasOwens, I think we disagree. IIUC, a question about which PLs make it easier to achieve certain tradeofffs (e.g. high performance vs high-level of abstraction or vice versa) is on-topic, a question about which tradeoffs lead to good designs for an x are on-topic. If that's the case, and the charitable interpretation of question+title is as written then one ought not treat the whole question as off-topic just because of a poorly chosen title. – Mike Samuel Jul 18 '17 at 17:50
0

My reasons are that any suggestion of "best" presupposes that folk have already worked out the optimal solution for the eventuality related to the question. No better solution could ever arise.

In the case of best practice, I believe you are 100% wrong. See the definition in the oxford dictionary:

Commercial or professional procedures that are accepted or prescribed as being correct or most effective.

I think the fact that things may change in the future is neither here nor there; there will often be current best practises.

For other versions of 'best...' you may very well have a point, but as others have answered, that is not necessarily a downvoteable offence.

  • this seems to merely repeat point made (and much better explained) in a top voted answer that was posted few days before – gnat Jul 20 '17 at 13:36
  • 2
    @gnat from my understanding, the top voted question does not directly disagree with the OP's premise that 'best practice', rather suggests that the problem is with the people who use the phrase's understanding of the phrase. I could be wrong, as the but that's how I read it, and so added my answer to challenge the assumption that the questioners don't know what they are writing. – user232573 Jul 20 '17 at 13:46
0

Why not, people down-vote for every other reason imaginable ...

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .