This post is really about the idea that today I feel like an idiot. I know I'm not an idiot. But the idea that you share ideas with thousands of people and get something wrong and everyone else got it right, just feels very much like I'd just like to crawl under a rock and hide. How could I miss the idea that creating checks is testing and programming, not checking. Then again, I'm most likely not alone with my lack of understanding. I have no need to be right, all I need is to learn to make sense of my own head driving my actions.
Over time, I've read James Bach's article on Testing and Checking Refined many times, and with all the reading, all the video and talk listening I've done, it never got through to me that they might be saying that checking does not encompass creation of checks. Coming up with the ideas of what to put in the checks is testing. Implementing the checks is programming. And checking is only running the checks that exist. Checking is done by a machine, or a human that acts as if he was a machine.
So, their checking is not only a part of testing, but it is a part of testing that gets twisted in a complex relationship of activities of testing (anything a human would do that is testing), programming a check (anything that human would do that is programming) and checking (anything a human would not do unless made act like a computer). What I thought was their checking is three things in their universe of words.
- Skilled cognitive work of coming up with ideas of checks = testing.
- Skilled cognitive work of turning the ideas into checks = programming.
- Applying a decision rule again and again = checking,
A way of describing that I'm looking for is to distinguish the activities around getting a check done (my way of thinking of checking - coming up with ideas of checks and programming the checks included) or getting a learning delivered (my way of thinking of exploring, using tools to extend reach). As a tester, I feel I think differently when I test with the purpose of coming up with algorithmic decision rules that I can then program as checks and when I test with the purpose of finding information in ways that I never plan to reuse as checks.
I am using checking and exploring as words to describe those purposes - still will do so, regardless of understanding someone else's use now differently than before.
Reading twitter discussion on Toby the Tester's blog post on feelings, I note we appeared to share the idea that coming up with checks and writing checks are checking. That discussion finally lead me to the realisation this blog post is about. In his blog post, without defining the words, his post on feelings make sense. It communicates it purpose well without a universal (or even incorrect use of some referred to) terminology. I understand what he is explaining without adhering to right labels and meanings of checking/testing. And with the short definition of checking, taking outside the context of original article by James Bach, I could still easily come to the idea that process of making evaluations by applying algorithmic decision rules would include coming up with ideas of decision rules (testing) and implementing them (programming).
I've been suggested the wordplay I chose to again get into is a game I can only lose. It's not about being productive but about being superior. But since I believe that people have good intentions, I can't believe it's just that. But it's good to remember how little specific words can mean. I'll leave this post with less than two minutes of Richard Feynman - thanks to Llewellyn Falco for pointing to a video that gives me comfort.