“What is hypocognition? If you don’t know, you’ve just experienced it.”
In my opinion, there is no better way to introduce the concept of hypocognition than the sentence you just read.
“Hypocognition, a term introduced to modern behavioral science by anthropologist Robert Levy, means the lack of a linguistic or cognitive representation for an object, category, or idea. [..] We wander about the unknown terrains of life as novices more often than experts, complacent of what we know and oblivious to what we miss.”
I now want to go over a few examples of how this is relevant to testing.
Juniors in our field
I remember being a junior tester with nothing more to show for myself than an ISTQB Foundation certificate. I felt very insecure when I was being let out in the wild on my first ever agile team. I was the only tester there and I felt a huge amount of pressure to do well. I now know how little I knew back then. I was 100% doing black box testing on the web app, not using the browser dev tools because I didn’t know they existed (hypocognition) until a kind developer showed them to me. I also was doing all my testing end to end because I had no idea you could isolate parts of the application by running them locally or using mocks and stubs. This resulted in a lot of boredom when the test environment was down because I thought that stopped all my work. Safe to say that I truly did my best, but my best was very limited when it came to testing abilities.
I don’t know if this is a phase you can skip, I’m inclined to think one cannot. When I encounter a junior tester now, I try to show them some basic things and point them to the Ministry of Testing resources to continue their learning journey. It’s hard to know when a person can take on new concepts in one session and when it’s time to stop for a while. There’s another problem with teaching people new concepts because what you know might be important to you, but it’s projection to think that everybody else should know it as well. I don’t have a one size fits all answer to which basic concepts a tester should know and which basic skills a tester should have.
Programming for test automation
Many testers these days can program for automation purposes, but they might not know about some programming concepts that more advanced software developers do know about: coding patterns, just having more experience handling an extended code base, choosing the right level of abstraction, etc.
It’s really easy to make buggy code, but no one is doing it on purpose. It’s because of hypocognition a lot of the time, too! The duplicate code is there because the tester wasn’t aware of the concept of DRY (Don’t Repeat Yourself). The lack of using a Page Object Pattern can also be explained by hypocognition, for example. And, I wonder if the abuse of end to end test automation could also be explained by people not knowing how to do it otherwise.
I do want to make a special mention of non-helpful behavior that some software developers engage in. As a tester who tries to write code, I have encountered clumsy behavior many times. This manifests itself when a developer said things to me like “Just do this”, “it’s easy” when they were explaining coding things that were completely new to me. This made me feel like a fool for not knowing things and it just doesn’t create a safe environment. Now that I’m not a junior in the field anymore, I can retort in a calm manner with remarks such as “it is new to me, so please don’t assume that it’s easy. Give me time to learn it” and usually the other person is adult enough to realize how they came across. I just want to stress that it’s okay to not know everything. Take your time to learn and when a concept is new to you, just revel in the fact that hypocognition is over for you on that one!
How to work with hypocognition
You can never escape hypocognition because you will never be able to learn all the relevant concepts in our field of work. Sure, you should always strive to learn more, but in the end, there will always be new things to learn.
I’m going to repeat myself here, but we should always involve more people in testing activities to make sure that we help each other avoid potential blind spots in our testing approach.
On top of that, we should pair up with junior testers and help them learn new concepts. And don’t be surprised if you learn something new from a junior tester as well!
- Wu, K., & Dunning, D. (2018). Hypocognition: Making sense of the landscape beyond one’s conceptual reach. Review of General Psychology, 22(1), 25-35.