15

What does it take for something to go from being merely subjective to a "best practice"? Is a "best practice" no longer subjective? It seems like something becomes a best practice when a lot of people adopt it. But there are plenty of examples where popularity != the "best" practice, or even a "good" practice.

Also, subjective is one of the most frequent tags on SO so far, and it seems to have a negative connotation. One of the ways it has become so frequent is because of SOers who re-tag questions as "subjective". Should all questions be worded so that they have some clearly defined metric, such as "What's the fastest way to instantiate a widget class?"

Since programming is often described as an art, isn't art inherently subjective?

2
  • 1
    For a question that asks about the subjectiveness of other question, this is itself a very subjective question :)
    – Graviton
    Commented Jan 31, 2010 at 11:31
  • I think it's worth noting that “best” in this context more accurately means “optimal”. Given enough restraints on a problem and a target intent (speed, minimalism, simplicity, etc.) there is often only a handful of applicable solutions, if not a single solution that has long been accepted as the most-optimal solution in existence for the problem space. And this seems like exactly the kind of wisdom people asking questions and seeking answers on SO often want and can't find elsewhere (I know I often am). Commented Mar 20, 2013 at 1:13

6 Answers 6

17

The term "best practice" is just a buzzword to make a technical option sound more standard than it is. The very term "best" assumes degree of goodness, which is by nature subjective.

For example, is using version control a best practice? How about garbage collection? Refactoring? Continuous integration? Coding conventions? Unit tests? Pair programming? Thick specification documents in boxes? The answer is mostly "it depends." Similar buzzword is lifehack.

Edit: See NO BEST PRACTICES linked from What are "best practices?"

When you say that something is a “best practice”, you may impress the uninitiated, or intimidate the inexperienced, but you just look foolish to people who believe in the possiblity of excellence. Excellence in an intellectual craft simply cannot be attained by ignorantly copying what other people say that they do. Yet, the notion of a best practice is really just an invitation to be an ignorant pawn in someone else’s game of process manners– or it’s a trick to make people pawns in your own game.

Simple, honest alternatives are available:

  • “Here’s what I would recommend for this situation.”
  • “Here is a practice I find interesting.”
  • “Here is my favorite practice for dealing with {x}.”
  • “{Person X} attributes {practice Y} for his success. Maybe you’d like to learn about it.”

I don't fully agree with the whole "intellectual craft" and "excellence" bit, but you get the point.

5
  • I upped you one.. I think it was ungood for you to be downed for such an opinion. but yeah, version control is a pretty best practice. I refuse to work without it. hrm. I despise garbage collection, though, because I came from an era when programmers took care of their own memory.
    – stephenbayer
    Commented Oct 14, 2008 at 3:02
  • @stephenbayer, thanks. I think most programmers can agree on version control, so I put that in. But all too often the term "best practice" is used just to push a subjective agenda into an organization. Commented Oct 14, 2008 at 3:16
  • Version control? Best practice. Garbage collection? Comes with the language, not best pratice. Refactoring? Don't know. Coding conventions? Best practice. Unit tests? Yup. Pair programming? Acceptance is not wide enough. Documentation? Yes Thick documentation? Nope. (My subjective opinion)
    – Treb
    Commented Oct 14, 2008 at 6:35
  • The only best practice is realising that there are no best practices, including this one. :-)
    – Greg Beech
    Commented Oct 14, 2008 at 7:43
  • My problem is that the term "best practice" is often used as a weak argument in lieu of any reasoned justification. It suppresses critical thinking, "Do it this way, it's a best practice". The question should always be "why is it a best practice?"
    – Dan Dyer
    Commented Oct 14, 2008 at 13:36
8

I'm unfortunately not an artist. I wish I were. I go at coding as more of a building project, with well defined parameters and specifications. I give a client what they want using the tools I have available. I believe something is considered best practice when it is documented by industry leaders and by groups of experts who have seen the same problems solved hundreds of ways, and seen the pitfalls and successes. These are usually documented in order to keep other wayward souls from making the same mistakes and having to relearn things that the coding community has already learned. I believe it is important to continuously read up and understand the documented industry best practices, and to have enough experience to know when it is better to deviate and why. There will always be an infinite number of solutions to problems, but being aware of the experience of others that solved similar problems avoids much headache and heartache.

Edit: As soon as I posted this a question came up that illustrates what is truely subjective:

What is the best language for a beginner to write a blog engine in?

While it's true the "Subjective" Tag has been overused as of late, questions like these have absolutely no correct answer. Of course, I also believe, that doesn't mean they aren't important to those that ask.

1
  • IMHO your example is not truely subjective. The questionner gives good details of their experience and the project goals, so it's possible to offer advice tailored to them. Without those details, the question would deserve the SO subjective tag, because the only sensible answer is "it depends on your previous experience and what you are trying to achieve".
    – MarkJ
    Commented Jan 31, 2010 at 18:10
4

Honestly, I am taken aback by the sheer number of questions that ticker through here whilst not solving a single concrete problem at all.

Calling them "subjective" or "best-practice" or even "poll" does not help any. Most of them exist merely to make the author feel warm and cosy about himself and generate tremendous amounts of rep as a welcome side effect (up-voting questions like "What is your favorite [whatever]" simply is beyond me).

The so faq (there should be a badge for reading it) makes the intent of this site quite clear, and asking subjective questions sure as hell is not on the list. Most of the people asking subjective questions simply are too lazy to go and read a book about the topic, or google it up.

That said, the question has a fundamental flaw: "Best practices" are as big a part of current fashion as anything, and where you draw the line between "subjective" and "best-practice" is, you guessed it, subjective.

It'd probably be best if there was a community "vote as subjective" button, and when that hits ten, the question is converted to a community wiki and all the rep generated gets revoked. This would help a lot.

3

I would differentiate between real BP and things that are only called best practices because it is a currently very popular buzzword and adds credibility to them.

I believe stephenbayer gives a very good definition of real BP. Rephrasing his words and adding something of my own, BP are

  • well documented
  • developed by industry leaders and by groups of experts
  • based on lots of experience
  • constantly changing and emerging
  • accepted by the majority of experts in the field

There is not much room left for subjectivity here, either a practice is accepted as BP, or it isn't. The process of developing/documenting a practice and the acceptance process as BP by the community however, is, should be, and has to be subjective. Inifinite diversity in infinite combinations.

As for the discussion wether programming is an art or not, the answer to that is obviously... well, subjective ;-) For me as an engineer, the answer is: "Certainly not!" In my opinion, this is mostly used as an argument by developers too lazy to adopt BP. (Yes, this is very subjective.)

2

What does it take for something to go from being merely subjective to a "best practice"?

When something is merely subjective, you would expect that contradictory answers are the norm. A subjective question is asking the community an opinion.
When a question is marked as best-practice, it is assumed that there is already a consensus on the answer.

Is a "best practice" no longer subjective?

I think that if a question is marked as best-practice it should not be generally marked as subjective. There can be some borderline cases where this makes sense, but I generally re-tag the questions which are marked as both.

Should all questions be worded so that they have some clearly defined metric, such as "What's the fastest way to instantiate a widget class?"

No. I think that subjective and best-practices questions are very useful and welcome in SO. Of course, if what you really want to know is very specific, then your question should be just as detailed.

Since programming is often described as an art, isn't art inherently subjective?

Well, ehm, you might consider extremely clever or witty coding as art. Normally though I think that programming is a craft, and a young one at that. By the way -- is making statues art? In some cases, yes. In some others, for example sculpting souvenirs, it's not. Should there be best practices in sculpture? You can bet there are. :)

1
  • +1 for programming is not an art and also for there are best practises in sculpture.
    – MarkJ
    Commented Jan 31, 2010 at 18:11
0

Maybe we could define a Best practice the way the nice people over at the SEI do.

A best practice is one that is proven scientifically to improve results.

The quickly makes most "best practices" not best practices.

And might just make you a CMMI bigot too.

You must log in to answer this question.

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