TrainingConferencesAbout UsContact UsAdvertiseSQE.com

StickyMinds.com: brain food for building better software

Join

Join

Clarify Your Search Criteria
Tips on Using Our Search Feature(s)
StickyMinds.com Home
ResourcesEventsTopicsPowerPassJobs
Software Testing & QA Online Community  >  Detail: Communicating with Context



A StickyMinds.com Original
Article Picture
Communicating with Context

By Danny R. Faught/Michael Bolton

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: Danny Faught and Michael Bolton have observed that context-driven testers have a uniquely productive style of communication that they use amongst themselves. This context-driven culture might seem strange to outsiders or newcomers to the community. In this column, Danny and Michael highlight some of these specific traits that can help you communicate whether you consider yourself context-driven or not.


ASTQB
Hear more about this topic in the StickyMinds SoundByte podcast interview with Danny Faught and Michael Bolton.


Many disagreements can be attributed to communication problems. The worst cases are those in which we don’t even realize that our message isn't getting across the way we intended, and that's often because we’re working in different contexts. Here are a few lessons that we've learned from years of discussions with context-driven testers.

Context-Driven Principles
In his blog, James Bach writes, "'Context-driven' means to match your solutions to your problems as your problems change". In the context-driven community, we don't believe that there are best practices; that is, there are no approaches that work universally for every project. It's fine to discuss practices that have worked in a particular context, but it's important to identify the aspects of the context that might be related to the success or failure of the practice—and how the context may color the ways in which the advice is given or received.

What's the Context?
There are dozens of possible dimensions of context that might vary from one development project to another. The context-driven principles state that people, working together, are the most important part of any project’s context. Other key aspects of context include the product, customers, development group, schedule, budget, and resources. This isn't an exhaustive list by any means, and sometimes contextual elements can be subtle. In one company that Michael worked with, a change in the corporate email client had a profoundly negative impact on the company culture. eXtreme Programmers suggest that the arrangement of the workspace can make huge differences in team dynamics. Recognizing such differences and how they might matter is an important skill for people who are giving and getting advice.

What's the Problem?
A common trap is to argue about solutions without considering what the problem is in the first place. For example, someone who needs to efficiently execute a suite of functional tests through a Windows GUI every night might innocently ask "What are the best test tools?" That person might be surprised by recommendations for a unit test automation tool or a test management tool for manual test cases because he didn’t mention the problem he's trying to solve.

Leaving the problem statement out of the discussion can limit the range of solutions that people offer—or can lead people to propose solutions to problems that you don't have. Open yourself up to creative solutions by keeping the problem in the open.

Avoid Hyperbole
Be careful about saying "always," as in "Always automate your tests." From a context-driven point of view, an absolute suggestion would have to make sense in all possible contexts. To be credible, you have to understand all contexts. Even if you had this kind of omniscience, it would be difficult to convince anyone else that you did.

Often when people say "always," they are referring to a particular context that isn't stated explicitly. If you're not sure what that context is, trying to find counterexamples to the assertion you're discussing can be helpful in framing the context. For example, when faced with the edict "Always automate your tests," you might ask:
  • If we're a week away from a big release and we've never automated a test before, should we start automating now? (Timing is part of the context.)
  • Should we automate usability tests? (The context might involve just one of many types of testing.)
  • Should we automate tests against an interface that is changing frequently? (This is a context that may have a poor return on investment for automation.)
Be Precise
When context-driven people talk to each other, we often ask clarifying or definitional questions. Why all the fuss about definitions? Because it's hard to agree on anything when we don' even agree on what we’re talking about. As Toronto-based risk consultant Ian Heppell suggests, "All arguments are really about premises," even though they may look like they're about conclusions.

Instead of saying, "Always automate your tests," you might say, "Using automated unit tests has helped me quickly find coding problems on three of my last four projects. On one project, though, the other developers didn't help maintain the tests, and it took too much effort for me to maintain all the tests myself." Someone may ask, "What do you mean by 'unit test'?" Instead of pretending that there is universal understanding and consensus on what constitutes a unit test, you may offer, "All the tests that a developer runs, even if they’re not at the unit level." When you are talking to people who are working in a different context, there's a risk that you might be using the same words to describe different things. In the context-driven community, "What do you mean by . . . ?" is a question that we expect to hear and to ask—and to answer.

In an online discussion, Danny said, "I'm working with a startup that has issued some of their releases without doing any testing." Michael responded as follows:

If testing is "questioning a product in order to evaluate it," did they really not do any testing? Perhaps you mean that they didn't have any people called "testers" on the project, or that they didn't schedule some time for a "testing phase," or that they didn't do testing off the developers' machines, or that they didn’t do very good testing. Can you tell us more?

Danny, to his credit, didn't take this personally. He recognized that his statement had been vague and clarified that he meant that no testing specialists had tested the product before its release. It can be surprising how words like "testing" that are so important to our work can have so many different meanings when we don't make the effort to be specific when we use them. Be wary of words that are likely to be interpreted differently by different people. In the example above, if Michael had made assumptions about what "testing" meant instead of clarifying, the rest of the discussion may have been unproductive.

Keep It Real
When we are discussing the merits of a particular practice, context-driven testers value real examples from personal experience. There is a great temptation to talk in terms of "what ifs," but it can be helpful to sort your anecdotes into one of three bins: 1) things I did or observed, 2) things people told me about, and 3) things I think might have happened or might happen in the future. It can be humbling to realize that much of what you're trying to say is conjecture if you don’t have a personal experience to back it up. It's OK to talk in conjectures, as long as you make it clear that that's what you're doing.

Don't Forget Your Context
To communicate well, remember that you're not omnipotent, and neither are your listeners. If you make the extra effort to frame your statements well, your message will come across more clearly. After all, it's usually cheaper and easier to say it right the first time.

References


About the Author
Danny R. Faught is an independent software testing consultant. His wife Terry says that he may communicate well at work, but he still can't seem to understand her context. Danny's home on the Web is (www.tejasconsulting.com).

Michael Bolton is a testing consultant and trainer based in Toronto. He has written a book with James Bach called Rapid Software Testing and a course on how to test software credibly under conditions of uncertainty and extreme time pressure. Michael's home page is www.developsense.com.

Back to Top
 

StickyMinds.com Weekly Column From 10/15/2007 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Sankara Narayanan 10/23/2007

First of all, thanks for this beautiful post.

After reading the post, I can make out that "context-sensitive" is talking
sense with focus on finding solutions rather than complicating it. Any tester who is assertive with excellent problem solving skills and attitude will do best in communication. Did "context-sensitive" mean just that?

Author's Response:
10/23/2007    
Hi, Sankara. I think that problem-solving skills do require strong communication skills, though I wouldn't say that "context-driven" means exactly the same thing as problem-solving. Being context-driven helps to prevent problems. Also, being context-driven help you to solve the problem you're having rather than some other problem, or a broader problem than what you're facing.

Process improvement and problem-solving can easily get derailed when we focus on implementing solutions without first trying to understand the problem and its context. Often I find that the first "obvious" solution is not actually the most effective way to handle a problem.

-Danny

 
 
Comment:    
by Bj Rollison 10/17/2007

This is a good article about clear, concise communication, and you guys make some very good points to help avoid ambiguity and misunderstandings.

I think we all agree that whether or not we do something occurs within a context, but I think there may be a subtle distinction between "we don't believe there are best practices..." and "I believe there are best practices..." and any practice is or is not applied within a given context.

For example, in my opinion, I think that unit testing is a best practice that can be universally applied to any software project. Whether or not we decide to perform unit testing is a...Read On

Author's Response:
10/17/2007    
Hi, BJ... thanks for writing.

First, context-driven thinking suggests that "best practice" can be both an adjectival phrase /and/ an idiom; it doesn't have to be exclusively one or the other. Not all adjectival phrases are idioms; not all idioms are adjectival phrases; some things are both, and some things are neither. One hallmark of context-driven thinking is to focus not on what something /is/, but on what it /might be/ to some person in some context.

I would accept your description of an idiom--"an expression whose meaning is not predictable from the usual meanings of its constituent elements", and say that it applies wonderfully to "best practice". Best, according to Merriam-Webster, means "excelling all others" and "most productive of good; offering or producing the greatest advantage, utility, or satisfaction". I can't say that I've seen any practice whose excellence is immune to context; I can say that I've never seen or heard of such a thing. I've asked people to supply me with one, and over the years, I've never been forced to say that /everyone/ should /always/ do /X/.

You make this point yourself when you say "whether or not we decide to perform unit testing is a conscious decision we make based on the perceived value of performing the practice of unit testing." That is, as intelligent people, we try to decide consciously, rather than compulsively.

As you make the argument in favour of unit testing, I might suggest that you use the word "utility", rather than value. There is value to unit testing; the question is whether the unit testing provides sufficient utility--value compared to cost--in some context. That context is shaped by the person who is performing the action; his or her skill in performing it; the person for whom the action is being performed; the relationships between the people; the time available; the tools at hand; the budget; the alternative actions available; the risk of screwing up; and dozens of other factors. This sounds like a lot of decisions when they're all listed out, but the speed of thought is virtually unlimited. By training, experience, and the application of heuristics, we can learn to evaluate and make such decisions quickly, consciously, skillfully, and sufficiently to satisfy ourselves and our clients.

For example, If I'm writing a quick script to exercise an input function in some program I'm testing, I'm doing software development. I'm probably not going to write unit tests for that script, because the cost of writing the script exceeds the value of the time it will take me. The program that I'm testing plus my eyeballing of the results will provide a sufficiently useful set of oracles for a throwaway script. I try to govern my processes by conscious decisions instead of rote behaviour; by what I decide is best /for my context/, rather than what some industry pundit, process manual, and certification scheme says I /must/ do. Maybe /that/ would be a best practice--except that I consider the value of rote behaviour: I don't usually think consciously about signaling my turns when I'm driving, and instead I just do it.

If you claim that unit testing is a best practice, you'd have to be specific about what you mean. For example, is bad unit testing a best practice?

There can be some practices that are better than others in a given context, as you suggest, but that doesn't automatically lead to "best". If I thought I had seen a best practice, context-driven thinking would require me to consider that I have not, /can/ not imagine all possible contexts. And just to drive the onlookers mad, I also have to say that I can't deny the possibility of a best practice /ever/ existing; I can only say that I haven't ever seen one, and I don't expect to. As Billy Vaughan Koen says in his superb book "Discussions of the Method", even his pet phrase "all is heuristic"--the foundation of his (heuristically) universal approach to problem-solving--is a heuristic.

Jerry Weinberg once described a tester as "someone who knows that things can be different". Anyone who touts a practice as universally best is suggesting that things /can't/ be different. In recognition of that, we context-driven thinkers can be neither fundamentalist believers nor atheists; we have to be agnostic. We might seem fundamentalist about context-driven thinking, but I'm happy to supply people with a number of example contexts in which context-driven thinking itself is a bad idea.

Cheers,
---Michael B.

----

Hi, Bj. When we implement a practice, it always has a context (indeed, Cem Kaner was the one who reassured me that even context-driven people sometimes say "always" :-). I think the only time a practice can have no context is when we are discussing it in an abstract sense.

To answer your question, I have not found any practice whatsoever that gives a positive ROI in absolutely every context. There are some practices that are very prevalent, like version control, but there are some projects where even that fundamental part of software engineering is not warranted.

For example, if we consider a throwaway script that is written in two minutes, used once, and thrown away, many common software engineering practices would not be useful.

With a little more thought, we can come up with less trivial counterexamples. One of my clients wanted to ask an outsourced development company to conduct unit testing on the code the outsourcer wrote before delivering it to them. After looking at the outsourcer's plans, I decided that they would be totally incompetent in their testing efforts, and I recommended that my client specifically ask the outsourcer to not follow through with their unit testing because it would be a huge waste of my client's money. Perhaps you could argue that a particular approach to unit testing is a best practice, and the outsourcer could have learned how to do it in the long run. But simple statements like "unit testing is a best practice" without that detailed explanation of how to apply the practice are not helpful.

If you want to continue the discussion on the StickyMinds forums, please let me know.

-Danny

 
 
Comment:    
by Robert Rose-Coutre 10/15/2007

Fascinating case in point on communication and definition of terms, right here in the reader comments. One comment below *appears* to disagree about "best practices"; but in fact agrees completely with the authors when you see what he *means* by best practices:

Authors: "...we don't believe that there are best practices; that is, there are no approaches that work universally for every project..."

Comment: "...I believe there are best practices - the problem is, not all best practices are applicable to the current context..." [and that you need] "experience to discriminate on which practices apply, or which don't, and...Read On

Author's Response:
10/15/2007    
Danny says: Hi, Robert. Thanks for that analysis. This may be another case of "violently agreeing." Sometimes the emotion implies that there is disagreement, but in fact the response is in agreement with the message being responded to. This is another communication trap to watch for.
----
Michael says: "Best practice" is an idiom--a combination of words that together mean something different from what they mean separately. I don't see any serious loss of meaning when I drop the word "best" from the idiom; that way,

Comment: "...I believe there are best practices - the problem is, not all best practices are applicable to the current context..."

turns into

Comment: "...I believe there are practices - the problem is, not all practices are applicable to the current context..."

Hard to disagree with that, isn't it? I can understand why marketers use "best practice"--they're peddling something that needs hype--but for real people doing real work, the "best" part seems like a security blanket that we can drop if we're thinking and acting as confident and skillful grownups.

I also like James Bach's subtitle heuristic for "best practice"; when someone says "that's a best practice", what they really mean is "I believe you will suffer if you don't use this practice".

Robert, I like your description of yourself as an "English-to-English translator". I've been there too! And you said "I'd rather encourage knowledge of practices and contexts, and align them uniquely with modifications with each project (which is probably the same as what everyone else said)" Well, I didn't say that, but I'd be happy to do so.

Oh, and to clarify--despite the good intentions of the people who write the mini-biographies, I haven't written a book with James called "Rapid Software Testing", but we have written and do teach a course by that name. But now that you mention it... :)

 
 
Comment:    
by Bob Edwards 10/15/2007

First, great article that raises alot of issues I find myself debating with other testers, and members of SQA managment. An associate of mine once said "Communication is not the art of what you say, it is the art of what people hear you say" (Dr. Carroll Cobbs). I wish every SQA manager I work with would read this article.

"In the context-driven community, we don't believe that there are best practices; that is, there are no approaches that work universally for every project. It's fine to discuss practices that have worked in a particular context, but it's important to identify the aspects of the context that might be related to...Read On

Author's Response:
10/15/2007    
Hi, Bob. I tend to avoid the term "best practice" primarily because of its negative connotations associated with turning off critical thinking. It may be one of those cases where the idea could be implemented well (i.e., including relevant context), but often isn't.

I prefer to think in terms of patterns - remember the pattern language concept that seems to have fallen out of favor in the last few years? I've never seen any standard format for describing a best practice, but with patterns, describing the context is a key element.

-Danny

 
 
Comment:    
by Gerard Miller 10/15/2007

The first sentence in the Preface to "Exploring Requirements Quality Before Design" Donald Gause & Gerald Weinberg quote John von Neumann,

"There's no sense being exact about something if you don't even know what you're talking about."

In this weeks article "Communicating with Context" you expressed the same idea. Well done! You are keeping good company. :-}

Author's Response:
10/15/2007    
Thanks for the quote - certainly relevant! The hard part for many
people is knowing that they don't know what they're talking about. We
get along much easier when we get past that barrier.

For me, the more I learn (e.g., the more contexts I see), the more I
realize I don't know (e.g., the more I realize that a solution for one
team might not work without modification for a different team).

-Danny

 
Back to Top



 
Ads By Google
What's This?
 
 



About Us   |   Contact Us   |   Terms & Conditions   |   Privacy Policy   |   RSS Feed



© 2013 StickyMinds.com. All rights reserved.
PNSQC

Tricentis



Agile Development Conference & Better Software Conference West