views:

1296

answers:

19

I read an article a few months back where the author suggested that best practices were bad. I can't find the article, but bonus points to the first person who does.

Basically the premise of the article was that labelling something a best practice would cause most people to accept it at face value and not investigate even better ways to do it. Instead, he suggested something along the lines of The Daily WTF where bad ways were highlighted and specific reasons why it is not a good methodology.

Do you agree with this? Do you think that best practices are considered harmful?

For bonus reading, here are a few links.
http://www.satisfice.com/blog/archives/27
http://blogs.msdn.com/ejarvi/archive/2005/08/05/448435.aspx

+16  A: 

I don't think you can make a blanket statement like "Best practices are always good" or "Best practices are always bad."

It depends entirely on the practice and the situation.

Mark Biek
I completely agree. I would upvote you, but I'm all out of votes for today!
Kilhoffer
Virtual Upvote for teh win! :)
Mark Biek
Best practices are also best-understood before being applied. As with all programming--if you don't really know what you're doing, you don't really know what you're going to get.
STW
+3  A: 

Is this it? - from James Bach's blog, found via this coding horror article.

Jeff
+8  A: 

There is no such thing like "best practices". There is "best practices for a given context".

Kind Regards

marcospereira
+6  A: 

I agree with it in spirit but not in practice. If you have someone who isn't going to read into why a best practice he is considering may or might not be appropriate for their particular situation what makes you think they're going to go research the poorness of their hacked together solution?

On the flip side, what about novice working programmers or ones with a deadline and not much time to research the alternatives. Both they and the maintenance programmer to come after them are better off if they stick to the party line rather than going off into the wilderness on their own.

George Mauer
+32  A: 

Best practices should probably be called "rules of thumb" because they aren't always the best way to go but, in theory, they are the best way to go absent any other information or guidance.

The problem, of course, with best practices is that people might follow them blindly without carefully considering if they remain applicable in the given situation. Nothing is ever "always right" but having a best practice as a baseline can be very helpful.

This might sound worse than it really is since people who are blindly following best practices are also those people who are most likely to make really bad decisions in the absence of best practices. So having best practices often provides them a fallback position that probably works even if it isn't the best decision.

Scott Alan Miller
Just a corollary - A lot of software 'architects' and programmers think that just because they modify their design to include 'design patterns', they make the world a better place. A design pattern just serves as a starting point, or a catch-phrase for a complex idea that needs to be moulded to your design, not vice-versa.
Fox
+3  A: 

My beef is with calling them "best" practices; if it's the "best", then it can't possible be improved, right ;)

I've worked in a few places (no names) that would just invent a process and label it a "best practice". They were then reluctant to change the process because, well, their practice was "best", it even said so.

I think the idea of first looking at how others have solved a problem, or use a tool, or whatever, is a good one. No need to re-invent the wheel, unless your situation requires it (as Mark says above). "Best practices" are good for a starting point when trying something new, but they're not the end-all be-all of software development.

Patrick Cuff
I agree, it would be nice if everyone would agree to call them "generally good practices" because that is normally what they are. But then, no manager would continue to pay for backups if backing up files was only a "generally good practice". It just doesn't have the necessary weight for managers.
Scott Alan Miller
+2  A: 

You will suppress some percentage of people from thinking differently about how to solve a problem. Some percentage of those people needed to be suppressed. I would guess they are the majority. Some percentage of the suppressed people should not have been suppressed and so you lost something that you'd wish you had not. Some percentage will not be suppressed by any "best practice" statement. A percentage of those, again probably the majority, are wasting their and your time. The remaining percentage of rebels will come up with something better. Now comes the management layer... Some percentage of them will dismiss the new policy bucking idea because it is not a best practice and you will loose it. Some new ideas will however be brought out regardless.

So how not to play these odds and potentially loose great, non-best practice ideas?

Have a specific avenue for bucking the status quo. This is easier in a small group than a large one, so be careful not to just make it the obstacle.

dacracot
A: 

I think that 'best practices' have often arisen as antitheses to practices that could be clearly labeled 'bad' which is unfortunate.

Perhaps it would simply be more clear to label 'bad practices' (i.e. naming variables after celebrities and functions after favorite TV shows or movies) and then suggest viable alternatives as possible practices.

Of course, generally when I make recommendations or suggestions I add the caveat that I don't know everything and there are other possibilities that I'm certain would work as well.

Noah Goodrich
+3  A: 

The Best Practice for Best Practices is not to follow Best Practices but to use them as a good starting point for what you should do. Afterall, any idiot can label something a Best Practice...I know this because I just did it (although I would argue I am not just any idiot).

Seriously though it is almost always a mistake to use other people's advice without engaging your brain. You have to understand it, think about it, determine if it really even applies, decide if you agree with it, and figure out what changes it entails to follow it.

Be skeptical but be carefull not to also be dismissive. Just because somebody chose to label something a Best Practice does not mean it is...but it does mean it is not either.

Flory
+3  A: 

Dan North, perhaps?

His talk at Öredev was titled No Best Practices; Methodology for Thinkers (video), and his InfoQ article Better Best Practices deals with the topic.

Henrik Gustafsson
Not the article I was looking for, but definitely a good read. Thanks!
Jason Z
+4  A: 

The pharmaceutical industry, with it's emphasis on safety, prefers the term 'good practice' over 'best practice' - which I think is a more appropriate description.

Rik Garner
+5  A: 

The article may well have been Paul Grahams famous one where he says:

Technology often should be cutting-edge. In programming languages, as Erann Gat has pointed out, what "industry best practice" actually gets you is not the best, but merely the average. When a decision causes you to develop software at a fraction of the rate of more aggressive competitors, "best practice" is a misnomer.

Lots of people quote this in blogs and presentations. For example Ted Newards great one on 'Rethinking Enterprise' at www.parleys.com

Garth Gilmour
+3  A: 

I agree that the use of "best" in this context is often a misnomer. "Best" is usually "common" and too seldom has any basis in empirical or objectively verifiable evidence to support it. As others have said, context is very important to determining what is best, and even then if it is just someone's preference (even an expert) it is just a recommendation, not "best".

Jeff Kotula
A: 

If the best-practice is designed for a particular environmental situation/equation then I don't think it is harmful at all. However If you change any 1 thing in that whole equation then one can not reply on the best practice to work. So can't blame the practices for that

Chanakya
+1  A: 

It is always best practice to think about all options before blindly conforming to a best practice.

ctrlShiftBryan
A: 

Sounds a lot like chapter 29 of Peopleware: "Process Improvement Programs"

Sam Hasler
+3  A: 

In my earlier job, our legal department always prevented us from using the phrase "Best Practices" in our contracts with clients and proposals. Instead, they always insisted on using the phrase "Good Practice". Their justification was that (Best Practice) is nothing but a myth, and clients might take us to court if it turns out that the best practice was not the best one.

whiz
+2  A: 

Don't just do things because someone told you "It's the RIGHT way", or even "It's the ONLY way". Be suspicious! Decide what to follow on your own!

A: 

It's the lesser of two evils.

A great programmer will know what is best at given point, applying best practices naturally, where they belong, because, well, they are the best.

A poor (or even average) programmer will struggle for a solution for given problem, and without guidelines, will often come up with one than will appear faulty or wrong in the long run.

Yes, with best practices you risk applying them blindly where they don't belong but without them you risk NOT applying them where they definitely belong, which will lead to much worse results.

SF.