A while ago, Elisabeth Hendrickson wrote a piece on endings and beginning. There was one sentence striking out to me:
I believe that the traditional software QA model is fundamentally and irretrievably broken.
I think there is something fundamentally broken in the way we are used to build and ship product. Triggered by Elisabeth I had an eye on stuff while starting to read The Psychology of Computer Programming only recently – yeah, I didn’t read all of Jerry’s books so far. Shame on me. These are my early raw thoughts on what might be broken.
To be honest, The Psychology of Computer Programming is more than 40 years old right now. So, what could you learn from a book that old? There is much in it, since it deals with the topic of psychology – a topic still that is still getting too few focus these days.
There, in chapter 4 on the Programming Group, I found a particular discussion about a topic which has been given few thoughts earlier these days. The effect is called Cognitive dissonance. What’s that? To cite wikipedia
Cognitive dissonance theory explains human behavior by positing that people have a bias to seek consonance between their expectations and reality.
That means that cognitive dissonance will make you biased towards believing whatever you want to believe. If you want to believe that the new car you bought was cheap, you will reject news about the price being lowered two weeks later.
What has cognitive dissonance to do with programming? Cognitive dissonance is the most often cited reason for claims for independent testing teams. IF the tester is part of the development team that created the product, then he will be biased to confirm the product is working.
Now, this is what the theory explains. Empirical data from agile teams with testers among them however, might point to a different conclusion. Sure, there are teams which would be better off with independent testers – probably off-shore in some other timezone across the planet. But that’s not my point.
Imagine, that at some point in the history of software delivery, we have been led astray by cognitive dissonance to form independent test teams. From that point on, the whole QA movement set off, leading to more and separation of testers and the remaining folks. At times, it seems like a whole caste of testers was created, which are less worth than those precious architects, designers, and programmers.
Recently, teams that overcame this second-class citizen testership since then have shown to be more productive with fewer errors. At least this makes me wonder how the world of software development today in the 21st century would look like, if we had found ways to overcome cognitive dissonance 50 years ago.
Sure, testers now-a-days have their role to play in software development. But what if this was just an evolution that moved us in the wrong direction? Think about it. How would software development today look, if programmers learned satisficing testing in the university, if they did pair testing of each others’ code – I saw a medical company doing that. Their first tester became that team’s ScrumMaster. And they are doing well.
I think it’s time to shake some of the foundational beliefs that we carry with us for decades now. Our ways to deal with cognitive dissonance and the call for independent testers is one of these foundations that I would like to challenge.