Testers* [do|don’t] (help) [prevent|detect] problems**.


Prevent or Detect.png

*For some definitions of “testers”

**For some definitions of “problems”

Hopefully, that title can be read in ways that will please everyone.

 

Before I start, I’d like to thank Gus for graciously allowing me to guest-post on his blog. When he offered me the opportunity to guest-post, he included: “If I say you’re my guest, it doesn’t mean that you can only say what I like 🙂 You can say whatever you like!” which I found to be very mature and a little bit crazy.  So, “Thanks, Gus!”

 

Onto the topic du jour…

 

Each time I’ve encountered this topic and debate, I’ve been able to refine my own thoughts on it. And now, I think I finally have a reasonable viewpoint that I’m comfortable sharing.  What follows is an approximation of that viewpoint.

 

I’ve tried to distill my thoughts on this topic into a few different-but-related themes:

  • Understanding Problems
    • Cause and Effect
    • Perspective
    • Definitions
  • Understanding Abilities
    • Wholly or Partially
    • Prevent or Detect
  • Modeling
  • Purpose, Meaning, Importance, and Value

 

Cause & Effect

I’m fascinated by causality and love to ask “why”. Sometimes, I enjoy thinking about single or multiple, direct and indirect, past causes and future effects of a given thing.  So, when confronted with a particular thing (such as a “problem”), In order to better understand it, I sometimes think about the past and what cause or causes might have directly or indirectly lead to the “problem”.  And I also like to think about the future, and what effect or effects might directly or indirectly result from the “problem”.  Thinking about all this allows me to better see that some “problems” are just effects of other, different “problems” in the past.  And I can also see that some “problems” might cause other, different “problems” in the future.  While the form (shape) of the problem may change, its essence remains.

 

Perspective

I also recognize that a “problem” is only a “problem” to someone at some time.  A “problem” to Jane might not be a problem to John.  Similarly, a “problem” to Jane right now might not have been a problem to Jane earlier, and might not be a problem to Jane later.

 

And so, with a bit of work and imagination, I can see different perspectives and imagine far into the past and future as single and multiple problems change forms and directly and indirectly become causes and effects of other problems.

 

Definitions

Once I’m able to consider the wide variance of what might or might not be considered a “problem”, it is easier for me to see how my definition of “problem” might not match another person’s definition. And so, if/when I want to discuss this topic with others, I first try to establish a shared understanding of the word “problem”.  I try to determine exactly what the “problem” is, who it affects, when it affects them, and how it affects them.  Only then am I better able to begin to understand and discuss whether or not a “tester” can contribute (wholly or partially) to the prevention or detection of the “problem”.

 

NOTE: I also try to establish a shared understanding of the word “tester”, but I won’t go into that in this blog post.

 

Wholly or partially?

Adding or omitting the word “help” in the title of this blog post can change the meaning of the statement drastically. By omitting the word “help”, the statement may be interpreted to assert that a single individual, completely unaided, does/doesn’t totally do some action.  However, by adding the word “help”, it allows that the individual may only partially contribute to some action.  Which action?

 

Prevent or Detect?

If the action in question is “detecting”, then I think that an individual can do it completely unaided. However, if the action is “preventing” (defined previously as “the action of stopping something from happening or arising”), then I think it is less likely that an individual can do it alone.  In my experience, it is rare that a single individual has the ability or authority to “stop (a problem) from happening” alone.  In my experience, it is more likely that a single individual only partially contribute to the action of “prevention”, and must rely, to some degree, on others, as well.

 

Modeling

“All models are wrong but some are useful” – George Box

Problem Cause & Effect.png

This is one model I made and found useful as I try to visualize and understand this subject and the ideas above. Hopefully, you will find this model useful, too.  This model attempts to show various problems (represented by red shapes) as they change from one form into another form through time.  Each problem is both an effect of previous problem(s) and a cause of subsequent problem(s).  I use this model to help me think about different problems at different stages in time from different perspectives and ruminate on the assertions posed in the title of this blog post.

 

For example, I think that some people may focus on the “helping to prevent problem 6” while others focus on the “detection of problem 3”. In fact, I think that both are right and it is reasonable to say “By detecting problem 3, a tester might help prevent problem 6”.  By traversing the timeline, I can also find other ways of saying similar things (such as “By detecting problem 2, a tester might help prevent problem 9”).

 

However, without first understanding which problem I’m referring to, and from what perspective, it might be possible to appear to disagree with supportive statements.  I frequently see people that believe they are debating this topic, when in fact I think they may simply be talking past one another (https://en.wikipedia.org/wiki/Talking_past_each_other).  Another term to describe this phenomenon is “shallow agreement”.

 

I also used this model to help me visualize more specific examples, like the one posed here: https://mysoftwarequality.wordpress.com/2016/05/05/testers-prevent-problems-every-day.  For example, the thought experiment posed that Larry could have helped prevent the “problem” (which was ostensibly, “500 Euro banknotes could be used to conceal money”).  I went further backwards in time and wondered if the problem could’ve also been prevented by not hiring the people who were deciding denominations in the first place.  And even further backwards, I wondered if the “problem” could have been prevented if those people were never born, at all.  And then going in the other direction into the future, I wondered if Larry’s help also helped prevent the “problem” of “concealed money being used to buy guns”.  And further, did Larry also help prevent the “problem” of “guns being used to murder people that might give birth to children that would grow up and decide on bank note denominations”?

 

I then used this model to think about a more personal example of a common “problem”: a software bug. Going forward in time, if I “detect” a bug, it might be said that I helped “prevent” a bad user experience.  And further, it could be said that I helped “prevent” road rage caused by a bad user experience.  And on and on.  Alternately, if I go backwards in time, it could be said that if I had “detected” the typo that caused the bug, I could have helped “prevent” the bug.  And further, if I had detected the exhausted developer that caused the typo, I could have helped “prevent” the typo and the bug.  And on and on.

 

For me, it is now easy to see how simply moving in time or shifting perspective can change the idea from “detection” to (helping) “prevent”. So, why debate this, at all?

 

Purpose, Meaning, Importance, and Value

Above, I said that I’m fascinated by causality and enjoy asking “why”. And so, I thought deeply to see if/where there was value in this debate.

 

But first, with regards to this topic and others, I’ve seen people wonder, “I don’t know why you bother with a reposte against this symatic bullshit”, and similar. Common definitions of “definition” and “semantics” are very similar.  They are, essentially, “a statement of the meaning of a word”.  Likewise, this is also a definition of “meaning”.  So, I think that when folks debate and struggle with “symatic bullsh*t”, they are, in fact, attempting to gain a shared understanding.  A common meaning.  And understanding what each other means is absolutely essential to effective communication.  I think it’s also worth noting that understanding what someone means does not necessarily require that you agree with them.  Two parties can understand one another while disagreeing.

 

Back to the reason of this debate: I’ve also seen people ask, “Why is the distinction important?”, and similar.  Importance is a matter of value.  So, why is understanding the distinction between “preventing” and “detecting” problems valuable?  I suggest a few reasons:  First, as stated above: it helps us gain shared understanding, which allows us to better communicate with one another, which is extremely valuable.  Secondly, I think the distinction has value because words can shape our thoughts, consciously and unconsciously.  Subtle phrasing can affect the way we view the world, whether we realize it, or not.  And finally, I find that thinking deeply about seemingly pedantic topics can sometimes help me gain insight into other, related topics, as well.  And this helps give me a better understanding of the world, which I find valuable.

Advertisements

4 thoughts on “Testers* [do|don’t] (help) [prevent|detect] problems**.

  1. Damian, my hat’s off to you. That is, as usual, a well analyzed and researched explanation for a topic that sounds simple to agree or disagree on. That post supported me in manifesting my own opinion on the statements involved.

    The way you research topics like that is simply fascinating for me; the care and love for details you put into this is nothing less than exemplary. This post shows me again, for my next blog post I need to take more time to use the techniques you told me in the past and demonstrated here again. It will help me understand the topic better, and will help my readers to understand my point of view better.

    Back to the topic. I left a comment on the post from Michael on my point of view on the topic. In the context of speaking from a tester’s point of view (for some definition of tester). In my opinion the “help” or “contribute” part in the statement is important when speaking about one problem. The aspect of preventing other problems in the future by that involvement is – I guess (not knowing better for now) – always “only” a passive one.

    Thanks for writing that guest post, Damian.

    Patrick

    • Patrick,

      Thank you for the kind words. I appreciate it, and hope that you’ll find my future work to be of the same, or better, quality.

      [In my opinion the “help” or “contribute” part in the statement is important when speaking about one problem. The aspect of preventing other problems in the future by that involvement is – I guess (not knowing better for now) – always “only” a passive one.]

      I agree. The addition or omission of that word can have a big impact on the intended and interpreted meaning of the sentence. Also, as James Irving (a tester in Australia) pointed out to me: Detecting problem X now might help prevent potential problem Y, but may also help prevent problem X from occurring again in the future.

      For example, imagine that some developer frequently makes typos (X), and that I *detect* those typos (X), which prompts the developer to fix those typos (X), and means that I’ve might have helped *prevent* a potential problem of a bad user experience (Y). And perhaps this repeated chain of events (make X > detect X > fix X > prevent Y) might cause the developer to be more careful in the future. Perhaps the developer might run spell-checks, carefully proofread their work, etc. in order to avoid making typos (x). Which means that I’d no longer be able to detect those typos (X) since they never existed. It could then be suggested that my past contributions (*detecting* typos) helped *prevent* future problems (making typos, bad user experience).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s