Sunday, October 21, 2012

Divisions in Testing, Slotting People - How bad is idea of schools?

This post is an offshoot of discussion with friends Rahul Verma and Vipul Kochar on twitter. It started off from a blog post from Rahul on "exploratory testing" - one approach to testing that many in context driven testing community are working hard to be be good at.  When Vipul joined the debate - to me, two key things stood out as following "long" tweet of viper suggests -

" ...classification, definitions are good. When one starts to use them to divide and slot people, it becomes counter-productive."

Vipul followed up with a detailed post here

Divisions amongst people

Take for example - the idea of schools in software testing by Bret Pettichord.

Rahul wrote a good summary and analysis of schools of testing way back in 2007.  Rahul's main complaint was schools concept divides people.  My view is different. To me, idea of schools has been very helpful to identify myself and my approach to testing distinct from others I see around. It helped me to develop my skills in the framework of context driven testing school. I think, testing as a multidisciplinary field was (will always be) divided. It is just that few refused to recognize the differences. Still worse, some insisted that their's is some sort of universally agreed way of doing testing.

What Bret did is phenomenal but at the core he simply named the groups/schools that he saw. In other words - schools of testing idea did not divide people - it gave "names" to different sets of practices "using" the name of testing. Having names to things arounds us helps to talk about the things, debate about them, understand them and improve them. That is exactly what Bret's idea of schools - did to some of us.

If you disagree with idea of schools - you might be saying one of these

"There is one universal way of doing testing hence idea of schools is absurd"
"I do not agree with Bret's classification - here is mine"
"I refuse the idea that there are patterns in testing that are distinct"

So - it would be not be correct to put the blame on idea of schools in testing to "division" in our industry - divisions always existed, we now have one model in which these differences can be named. I also argued with Rahul that "divisions" are good for our craft - they work like having multiple political parties in a democratic setup. With divisions we can have multiple, diverse ideas to co-exist. I am in favor of division in testing community as we need diverse mindsets, ideas and philosophies each offering solution to unique situations.

Vipul's post on "religions" and his apparent suggestion on being like "water" - indeed is a support of view of "divisions" are good.  If there are differences and divisions - cherish in diversity instead of trying to bring unification.

Slotting people, calling people by names

As strong supporter of schools concept - what I condemn is slotting people where they don't want to belong or identify with. There are factory or analytical school practices not factory or analytical school testers. Likewise there is Agile Testing (some form of testing that happens in Agile projects) but there are no Agile testers. There is exploratory testing and testers can chose to be good at it - but when they master it - they don't become exploratory testers - but testers with mastery over the approach of exploratory testing.

When people get slotted in groups/labels (for example if we call someone as factory tester) - for few it sounds "offensive". Personally, I am proud to be context driven tester. I don't have problems of me getting slotted in a category that Bret proposed. But that is me only speaking. By speaking of me as a context driven tester - I will let others know my testing philosophy and to some extent help others what to expect from me. This label for me is helpful to identify my approach and grow it in a framework driven by the principles of my school. 

Vipul approaches this from a different direction - he talks about dangers and obsession of belonging to a school (akin to type of fundamentalism that we see in religion). He says "Test matters and the test result matters not the division" - Well - I say - how does one test? what principles and values one approach the act of testing? The values, beliefs and approaches that one uses in testing define what Bret called as school. These elements of school are not independent and separate parts of a testers life and work. When we become conscious of them - we can work to improve them,  add few, modify few and delete few. How can one chase objectives and goals of testing without having a value system of individual about testing? If you think young testers struggle to define terms like of GUI testing or agile testing etc or struggle to belong or not belong to any school - it is sign of they trying to find their value system.

While a person can be FREE thinking person to choose and adapt - I can always see in the person - a subtle value and belief system about world, work (testing) - a view. Even choices of Free thinker are subtly guided by these values and beliefs. Instead of trying to deny the existence of these values and beliefs (in involuntary pretext of freedom to chose and adapt) - I urge likes of Vipul and Rahul to explore to find these subtle values that drive them. Bret's idea of schools and influences of James Bach, Cem Kaner and Michael Bolton - personally helped me to find my values or to be precise - they shaped up my fluidic and rather vaguely defined testing philosophies, values and beliefs.

I am proud to stand up as a context driven tester - I can talk about my values and beliefs about testing. While I do this - one thing that these great teachers (James, Cem, Michael) taught me is - not to get biased by one unilateral thinking. I constantly question my beliefs and values - I try to hang around with people who think and work differently than me. I train to be critical and rational thinker - constantly look to beat "confirmation bias".

I am reminded of this famous quote of Bertand Russel "Do not absolutely be certain of anything" - So…as a tester - I keep doubting my own ideas and that of others - that keeps me learning.



thespiritoftesting said...

Very interessting topic and nice article!
When I started my job as a software tester I thouhgt learning testing skills from school and getting certifications like ISTQB are the only things that are needed to start a carrer as software tester. But after a while I found out, that these things are not more than start points and basic know how which are usefull and also concidered - at least in Germany where I live - to get a job as software tester.

I think as a tester it's much better and easier to work as a independent person which doesn't work in that way other people and processes want us to work.

Independence is an important key for us testers because with independence we can start testing right now and don't need to think about working instructions or something else.
Another thing is that we testers do have that special eye for details which others may not have. Without independence it might be possible that we lose this eye for details for a while for example when we have to think of working instructions and so loose the focus on our SUT in this moment.

On this view and kind regards

James Marcus Bach said...

I suppose different people are offended by different things. For instance, I am offended by people who cry about the schools "separating" people when the fact is that they are already separated. What we are doing is acknowledging that separation. It's a fact. Deal with it.

This is why I think it's reasonable to compare schools with religions. You can't be a good Hindu on Tuesdays and a good Catholic on Thursdays. That's not how belief systems work.

Vipul has separated himself from my community with his choice of beliefs, values, and friends. If he doesn't like it he can change, but no, I'm not going to pretend I'm in the same community with him. The truth matters to me, and the truth is that we see the testing world in a fundamentally different way.

-- James Bach, Context-Driven Tester