Sunday, July 20, 2008

Are all best practices "worthless"? Testing Best Practices

Other day I was quoting following from Jerry’s new book on testing to one of my colleague who is a “best practice” proponent.

…..The risks in these two situations are vastly different, so do you think I recommended the same testing process I used for finding a personal web-writing application? Do you imagine I recommended that my client install random freeware pacemakers into live patients until he found something he liked, or didn't dislike? Why not?

I took above sentences as reference and told him.. “Can you use software testing strategy that one uses for web application writing to that of an embedded software in a heart pace maker? Hence best practices are such a junk thing ...

To that he was silent for a while answered --- I agree with your point that test strategy or approach used for web application cannot be applied for embedded software in pace maker … How about picking the practice from a same field/domain – will that not save the time, energy and effort for my client ? Let us say I develop a list of practices for a given field (embedded software used in human bodies) and keep “selling” them as best practices (jump start kit) for those clients who deal with such software? What is your opinion? Would you still say … best practices (in a context) are junk?

I did not have a good answer for him …. Then we discussed about “universal best practices” (I am not sure if such phrase exists as all best practices are universal in nature by default and context less??) such as “walking is good for health”,”Test considering end user scenarios”, “Do unit testing” “Do code review”, “Aspirin is good for heart”, “Drunken driving leads to accidents”, “Do meditation to calm your mind” etc. I told him about at least 3 contexts for each of these best practices where following best practices can lead to harmful effects.

After listening to me … he said … Shrini … you appear to be "making up" all these contexts to prove your point …I want you to answer my question – Are all generic best practices recommendations are worthless or fake? When customers want something readymade that will help them to jumpstart the work, they would like to see if I, as a consultant, can bring some “best practices” from my previous similar experiments. Is that expectation unreasonable?

I am thinking ... I don’t have a good answer for him … do you? I hope Jerry would have some answer …

Are there any "universal best practices" or by default all best practices are universal and context free? Will a best practice cease to remain as bet practice once it comes with a context?

[update] Quoting from Jerry's book again - "As humans - we are not perfect thinkers, we are affected by emotions and we are not clones. We are Imperfect, irrational, value driven,diverse humans - hence we test software and test our
testing AND hence test "best practices" that sales and marketing folks associate with software testing.

Shrini

9 comments:

James Bach said...

Shrini, I'm surprised that you don't have a good answer for him. It's so simple: the question itself is a silly question.

It's like asking, "it there a specific best solution to an unspecified equation?" No, there isn't! But why even ask such a silly question?

To solve math problems you must know what the problem IS and what the rules of mathematics ARE, right?

To tout best practices is to tout solutions when you don't understand the problems. That is completely contrary to the ethics of engineering and medicine and any problem-solving form of work.

"Best practices" can't exist in the first place (for the same reason there is no such thing as a "best number"), but even looking for "good practices" and applying them thoughtlessly, instead of studying your craft, identifying problems, understanding those problems, and solving them, represents an infantile wish to have some faceless "daddy guru" out there make all the problems go away.

Best practice thinking, apart from being irrational, is also irresponsible and childish.

Shrini Kulkarni said...

Thanks James for your insightful answer ...

As you rightly pointed out - best practices when deployed attempt to solve an UNSPECIFIED (or partially specified) problem.

Unfortunately those (clients) who seek best practice down play this. They seem to say "my problem is same as other client that you(consultant) have seen previously. so use the same formula here too.."

In IT services industry - "best practice" is also used as means to evaluate a consultant "know-how" or experience in a industry vertical. Hence we (consultants woking for IT services companies) are always asked to provide best practices to prove that we know their industry. Discussion about their problems comes only next (after having proved that "been there and done that") I am not sure if software product companies use the term "best practice" as much as IT services companies do.

I know of one "some what" acceptable best practice ...

They say ERP software come with a pre-configured version of ERP with best practices "metals" package included.

http://help.sap.com/content/bestpractices/industry/bestp_industry_fm.htm

May be the word "best practice" is misnomer here.

Shrini

Michael M. Butler said...

Let me add some thoughts if I may.

A big problem is that "best" is such a "punchy" word. Everyone likes and wants "the best", right?

And "the best" is always worth paying the most for, right?

Saying "here's what *I* recommend, and here's why" is part of a conversation.

By contrast, "best practicies" tries to short-circuit that copnversation, and to appeal to client needs in a way that closes deals, sells support contracts, etc. Fewer conversations can translate to more money and less thinking on all sides. If one finds thinking to be troublesome or risky, "best practices" offer an easy way out.

The social pressures when confronted with a plausible but shallow appeal to "best" anything can be huge. I am sure that such pressure is even greater in Asia than it is here in the USA. I respect Shrini for tackling this difficult task.

James Bach said...

Shrini, the efforts of your clients to downplay the skilled nature of engineering work are simply CHILDISH. Of course they want to believe that "our problems are the same as their problems." They want to believe in the toothfairy. But we should be adults and not cater to their fantasies.

In my work, I don't tell lies or coddle my clients. I can understand why you or other people might feel that they need to PRETEND there are best practices in order to keep their jobs, but let's not lie to ourselves, at least. Let's be honest about what's going on.

"Best practices" is a marketing idea designed to lull our clients to sleep.

Cem Kaner said...

Forget the silliness about universals--who can say what is universally valid in a society that has experienced only one planet?

Your colleague said:

"To that he was silent for a while answered --- I agree with your point that test strategy or approach used for web application cannot be applied for embedded software in pace maker … How about picking the practice from a same field/domain – will that not save the time, energy and effort for my client ? Let us say I develop a list of practices for a given field (embedded software used in human bodies) and keep “selling” them as best practices (jump start kit) for those clients who deal with such software? What is your opinion? Would you still say … best practices (in a context) are junk?"

This is less silly than "universals."

Suppose that you see a successful project that is similar to the project you are managing. And so you import some of the practices from that successful project to this project. Suppose you redefine "best" to mean "I saw it once, I think this is it, and it seemed to work, so maybe we should try it on this project." My phrasing is a little less overblown than "best practice".

Stated this way, I don't think I object to the underlying idea (reuse of something that seemed to work). Do you?

-- cem

Michael said...

We could get rid of a lot of the argybargy if we called "best practices" what they really are: "cool ideas that might help".

---Michael B.

Jeff capes said...

Well... I think I would disagree with James on his remarks, and would go as far to say his example was a poor one.

"It's like asking, "it there a specific best solution to an unspecified equation?" No, there isn't! But why even ask such a silly question?

To solve math problems you must know what the problem IS and what the rules of mathematics ARE, right?

To tout best practices is to tout solutions when you don't understand the problems. That is completely contrary to the ethics of engineering and medicine and any problem-solving form of work."

I think it unreasonable to compare software testing to either Mathematics or medicine. I would say that a better comparison would be Economics - a science, yes, but not an exact one.

An example of this could be a economist brought in to work for a firm that operates in an oligopolistic market. There have been no assumptions made about the task in hand, but straight away certain "best practices" are known (i.e can not compete on price). The same can be said of software testing, nothing has to be known about the problems that may be faced, but knowledge of the software industry allows certain principles to be followed.

Now I'm not advocating that certain procedures would be followed in every situation. It is up to the consultant to evaluate how the practices would be invoked in any given situation.

Ankur said...

Cem said:

Suppose that you see a successful project that is similar to the project you are managing. And so you import some of the practices from that successful project to this project. Suppose you redefine "best" to mean "I saw it once, I think this is it, and it seemed to work, so maybe we should try it on this project." My phrasing is a little less overblown than "best practice".

Stated this way, I don't think I object to the underlying idea (reuse of something that seemed to work). Do you?


I couldn't agree more... it's like learning from the mistakes we did in our previous works(of course related/similar work) , and converting those learning into best practises...
... I think if we perceive 'best practices' from the point of providing a framework rather than providing an end solution for that work, we might understand the term clearer... this is what I meant when I wrote best practises in QTP, you can always customize them for your specific needs.

Cem Kaner said...

> converting those learning
> into best practises...

I wrote my note to help tease apart two ideas, reuse and "best practice." Some people get so irritated with the claims of "best practices" that they end up condemning the idea of reuse.

I really like the idea of learning from experience.

But the VOCABULARY of best practices is entirely misleading. It causes confused discussions, and, I think, sharp business practices by consultants that border on fraud.

I don't understand how a "thinking tester" would describe something as a "best" practice without some evidence that it is actually "best"--or at least, better than many other seemingly reputable practices.

We need to decouple the valuable idea of reuse from the marketing sham of "best practice."