I was recently invited to be a part of Panel Talk in ISQT’s STEP AUTO Conference . Was a part of this session yesterday and overall it was an great experience being on the panel sharing thoughts and perspective on the diverse topic of Achieving Test Competency – Challenges & Emerging Trends . Other Panelists included Harinath Pudipeddi Practice Manager, Cerner Corporation and Ramesh Ramani Director –QA at Tavant. Harinath and me were in touch long back on a Collaborative Book writing project on Software Testing and it was great meeting and knowing him in person. Same pleasing experience sharing the Panel table with Ramesh as well.
In this post, I intend to cover some of the thoughts that I put forward in the session-
Achieving Test Competency is very much contextual:
While thinking about Skills and Competencies, Let me commence by first of all sharing my perspective where we are coming from and where we are currently headed in Software Testing profession. I think the past decade i.e. from 2000 to 2009 has been quite an eventful one in the history of Software Testing profession. Among the changes that have happened over this time, the profession certainly has gained more respectability and acceptance. Fundamentally, I have seen the Software Testing move from more being an Singular dimension profession in late 90’s to being more of multi-dimension profession. What I mean by this is that in early 90’s, the prime focus largely used to be on Functional part of testing i.e. the features that are exposed to customers through the UI. And over a period of time, the terms such as Security Testing, Performance Testing, Globalization Testing, Whitebox etc. rightly gained more prominence. I never say these types of testing did not exist a decade back but the extent of their applicability, popularity and awareness was way lower than what it is right now. There were multiple factors governing this change mainly- Expectations of customers, Post production bugs (and the noise generated by these!) and motivation to deliver ”complete" software to the market.
All the change that we have observed in the last decade or so had a significant impact on how we perceive Test competencies and its evolution. At the grassroots level, Test competency can be defined as ability of a person to do Testing well and effectively. "Achieving Test Competency" is no longer a simple phenomenon. With the diversification of Software Testing field, Software Testing competency has increasingly become very contextual i.e. when we say Achieving Software Test Competency, do we mean "Achieving Security Test Competency" or "Achieving Performance Test Competency" or "Achieving Functional Test Competency" or something else that is relevant. So, one thing is for sure, we dont have easy answers here.
Evolution of Software Testing Competencies- Practice makes a Tester perfect:
Speaking on the topic of Competence, i would like to mention about the famous psychologist, Abraham Maslow's conscious competence theory , which is is also known as "Four Stages of Learning". Relating this theory to Software Testing,
First of the phase that he talks about is Unconscious Incompetence i.e. the Individual neither understands the new skill and is also not aware or recognizes that he has any deficiency. E.g. A person who is still in college may have heard of Software Testing but may not be aware at all about what kind of knowledge is he lacking given the fact that Software testing is usually only superficially touched-upon in the colleges.
The Next stage is Conscious Incompetence i.e. when a person knows about what he lacks, has a deficiency on when considering a skill but has not yet put in effort to address that. Consider the same guy who was in college now joins an organization as a Software Test Engineer. Seeing a lot of activities happening around Software Testing areas, he may start to recognize what he lacks but may not have spend much time addressing the deficiency.
The Next stage is Conscious Competence i.e. when a person understands or knows how to do something and has acquired the nuances of the profession but demonstrating the skill do not come naturally to him and requires some level of consciousness. i.e. the same tester now spends lot of time learning Software testing techniques, tools, gets hands on information on different stuff, gets himself familiar with the indepth topics and various forms of testing and get experienced. He reaches a stage wherein he has gained considerable level of competence in the various areas and is able to work with little supervision from others.
The final stage is Unconscious Competence i.e. when the person has had so much practice with a skill that it becomes "second nature" and can be performed easily (often without concentrating too deeply). The powerful word here is that you gain so much expertise on something that it becomes a "second nature" and the skill and output flows naturally. One example of something that Second nature to you can be your command over your mother tongue. It is so ingrained in our systems that we don’t need to think twice before conveying our thoughts. Now, the question to answer would be- "Does Software Testing appear as Second Nature to us ?", "Have we achieved Unconscious Competence in Software Testing ?".
I won’t be judgmental in answering these questions here but to me Key to achieve Software Testing as a Second nature are 3 words- Practice, Practice and more Practice.
How much of Practice do we need to attain Second nature type expertise in Software Testing ? I probably don’t know but would like to quote a study presented by Malcolm Gladwell is his best-selling book- Outliers . Malcolm presents something that is called as 10000 hour rule i.e. Studies suggest that the key to success in any field is simply practice, 10,000 hours of it — 20 hours a week for 10 years. Excellence at a complex task requires a minimum level of practice, and experts have settled on 10,000 hours as the magic number for true expertise. This is true even of people we think of as prodigies, such as Mozart. During his formative years, Bill Gates spent several hours altogether in lab, programming almost nonstop for seven consecutive years. He was way past 10000 hours.
Another example, he cites is The Beatles, who performed live in Hamburg, Germany over 1,200 times from 1960 to 1964, amassing more than 10,000 hours of playing time.
This theory raises several thoughts-
Is this rule applicable to Software Testing ? Though I don’t have the researched data on Software Testing but I would rather believe that it is possible in Software Testing rather than not believing it. I have no reason to believe why it would not be given the diverse examples this study cites. This much practice would also help achieve what we call as ever elusive Second Nature in Software testing phenomenon.
Balance between different Types of Skills in Software Testing is a big Challenge:
Broadly speaking, we can view software testers as having two kinds of skills: one set used to perform basic duties at work, and another set of skills used to approach work. The former can be categorized as technical skills and the latter as soft skills. To elaborate more on soft skills, these are the ones that define one's approach towards work, life, problems, etc. Soft skills are people skills. The best part about mastering them is that the application of these skills is not limited to one's profession, but their scope reaches all aspects of life. Technical skills may teach one how to meet the expectations of the job, but soft skills teach one to succeed, and to exceed expectations. It is surprising that we spend our time educating almost exclusively in technical skills.
Having said so much in favor of soft skills, my intention is never to undermine the importance of technical skills. It's nearly impossible for a tester to survive in the profession without sound technical skills. What I intend to challenge here is a popular myth: Technical skills, and only technical skills make a tester a complete professional. I firmly believe that both technical and soft skills complement each other and the balance between these two is what makes a tester a complete professional.
For me, the key challenge in achieving Test competency is achieving right kind of balance between Technical skills and Soft skills. Aligning our schedules in a way that we spend quality time mastering both these types of skills and to the right degree. It comes with lot of discipline and afterall, we are what we repeatedly do.
Virtualizing the Software Testing:
The whole notion of Software Virtualization has affected Software Testing in a positive manner and it has potential to create more positive differentiation as I can foresee. The whole idea of completing a complex setup in a few minutes which earlier used to takes weeks is so fascinating. All this has been made possible because of advent of Software Virtualization. I do foresee lot of automation efforts happening around the area of Lab Management some things and some tools that will help to automate the entire Lab Management, manage the workflows at the click of the mouse. That would require more expertise from the testing teams to understand the concept of Virtualization in-depth to reap greater benefits.
Achieving zero Globalization Test Technical debt:
I think, in the overall Software practice because of the way Software development was perceived in the past, currently we are paying something that is termed as Technical Debt . The term "technical debt" was coined by Ward Cunningham to describe the obligation that a software organization incurs when it chooses a design or construction approach that's expedient in the short term but that increases complexity and is more costly in the long term. Take for example, earlier there was not a pressing requirement from customers to include Security into the product and as a result, the developers were complacent or intentionally didn’t include Security into the product. But over the years, when Security has become so much an ingrained requirement now the Development teams are paying the debt by include Security features in legacy code.
I have observed the same kind of phenomenon in Software Testing especially while doing the Automation of International Software applications. People design automation framework only considering one main language and do not build in Internationalization in automated scripts. When the product starts supporting various language at the later stage, we end up paying the Technical debt by modifying the Automated scripts to support various languages at much later stage. This is an inefficient practice, which I think will change in the time to come.
Apple-ification of Software Testing:
The first million iPods sold in 4 months. The first million iPads sold in mere 28 days. Apple is everywhere these days and according to many experts primary reason why Apple is seeing a stupendous success is because of its fanatical focus on product Design. Apple has literally redefined product design in more ways than one. More companies are focusing on design as core competency. I do foresee more advancements in the field of Usability testing. Like Security testing was in infancy at the start of last decade, I would say that Usability testing is in infancy at the start of this decade. As the time progresses, I foresee more structure around Usability testing than it is right now and it will soon emerge as a specialized skill. Again, Like Security Testing was earlier, currently as I see, Usability Testing is more a function of design and it will be more a part of testing life cycle soon.
Advancements in measurement of competencies:
Second thing I foresee is more external completion judging skills. There has been lot of competitions that are happening in Software Testing space that help judge core skills and competencies relating to Software Testing. Some examples are Zappers-Live Testing, Test Republic- Testing and Defect Reporting etc. Playing fields are leveled for all the testers. This to a large extent addresses the problems with traditional recognition systems for testers like Bug of the month around the organizations.
Overall, it was a great experience being a part of the Panel facing an intelligent audience.