Sunday, November 04, 2012

A bizarre idea called "Software testing factory"

"Persistence in the face of a skeptical authority figure is priceless" - Seth Godin

Paul Holland (twitter handle @PaulHolland_TWN) shared this amazing video of Seth Godin on education systems. As I listened to Mr Godin talking about how present system of schools evolved from schools churning about labors for factories. Alas - even in our software testing "industry", we still need laborers as testers and companies take pride in setting up software testing factories. This post is about how bad and dangerous is the idea of "software testing factory"

According to Godin, about 100-150 years ago - schools used to be for a different purpose. He says - large-scale education was not developed to motivate kids or to create scholars. It was invented to churn out adults who worked well within the system. Scale was more important than quality, just as it was for most industrialists. A day in school started with "good morning" represented the notion of respect and obedience that was injected into students as a virtue. School was about teaching compliance, fitting in for the students into larger social context when pass out. Schools, according to Godin were established as public education to produce people who could work in factories - create set of people who can comply, fit-in and follow the orders of the supervisor.  

Emerging industrialization brought the focus on profitable factories - Godin points out. Factory owners thought "there aren't enough people, if we get more, we can pay them less - if we can pay less we can make more profits. When we put kids into factory that is called as school - we indoctrinate them into compliance.  Godin points out another key feature of factories - idea of interchangeable parts - when translated to schools - it meant producing people who are replaceable just as "standard part" of a machine.  When it comes to work - if you do more - there is always "ask" for little more. This is because - we are products of industrial age. The term productivity was brought the center of the things.

Key idea that I was attracted in this talk was about "Factory and how factory worked". I strongly believe that software and software testing work is "knowledge work" in contrast to "factory work". Here, thinking humans, in collaboration with humans assisted by computers create stuff that we call software that has changed and continues to change our life.  Wholesale lifting of idea of factory - thanks to strong association of "quality" to likes of toyota and promotion of idea of  "sick-sigma" (Cem Kaner used this phrase first, I think) - we have indoctrinated software people as factory workers.
I am troubled by this. When I ask people  - "does it what we deal in factory - machines/concrete things vs abstract ideas and machine instructions - matter? Should or is software produced like a machine in assembly line",  I get no clear response. Many simply think since our industry (Software) is immature and nascent - we must learn from engineering disciplines like manufacturing.

I am fine with learning from other disciplines as  I believe software testing is multi disciplinary - we constantly import ideas from multiple fields such as natural sciences, maths and statistics, behavioral economics, neuro sciences, cognitive psychology, philosophy, epistemology and list continues. I am against  wholesale and mind less import of ideas from the areas where we deal with a totally different type of things and we must exercise caution.

Coming back to factory - many IT services companies take pride in saying "we have successfully implemented software testing factory for a client" or "software testing is now commoditized" - what a shame !!! What happens in a software testing factory? There are dozens of "brain dead" people called software test engineers whose job is to produce test cases, bugs, test results, automation code (sorry popular word is "script"), metrics and tones of reports.  The intellectual pursuit of software testing that seeks to discover, investigate and report interesting and strange problems in software that requires - thinking, skeptic and open mind - has been reduced to "mindless" factory work. As a passionate tester, I would never want to associated with this deadly idea.

Am I biased as tester about my profession as some highly complex rocket science? Is my rational mind blocked or misdirected by confirmation bias? I think that is possible. If I am thinking about software testing as a business - like any other business say hotel, garments, manufacturing or engineering hardware - I would love the idea of factories. I would want to maximize my profits per dollar of investment. I would want to train cheap labour - teach them how to write test cases, report bugs and automate test scripts. I would then deploy them in "mass" to a client and charge handsome money in the name of testing. This business apparently works and it is perfectly legal, by and large ethical.

If I imagine myself as a tester in such factories (flip my context from factor owner to a factor worker or a supervisor) - I see a dark future for myself.  Just as factory works are expected to "comply" and follow a set pattern of work - when factor owner does not need me - I don't have any skills that I can trade outside factory. Over a period of brain dead work - I have lost my thinking and questioning mind. Unless I gain skills in becoming factory owner myself (that is a business development and management skill) - I must leave the factory quickly and move to an environment where I can grow my skills as tester  as a thinking individual.

In short - if you are managing software testing as a business - software testing factory is good for you. If you are a software tester working in a software factory - get out of the place fast or change the career to become factory owner or supervisor.

As a  tester in me roares - I wish for "End of compliance as an outcome - it is too boring for a curious, skeptic mind to simply fall in line".

Additional Notes: 
Following are few statements - that I liked that strikes chord with my belief in "software (testing)" as a knowledge work as opposed to factory work
  • Why we would not want to have our kids to figure it out and go do something interesting
  • Are we asking our kids to "connect dots" or "collect  dots"
  • We are good at measuring how many dots we collect - how many boxes are collected, how many facts memorized, 
  • we don't not teach kids how to connect the dots. You cannot teach connecting dots in dummies guide, text books. By putting kids in to situations where they can fail, experiment
  • Grades are an illusion - passion and insight are realities
  • Your work is more imp than your answer in congruence to answer key
  • "Fitting in" is a short term strategy to go no where.

Do not forget to read this pdf "stop stealing dreams" by Seth Godin.