Friday, September 17, 2010

Panel Talk: Achieving Test Competency – Challenges & Emerging Trends

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.

Emerging Trends:

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.

Saturday, September 4, 2010

Key professional lessons from the life and times of James Bach

Continuing steady on my reading expedition, i managed to complete- Secrets of a Buccaneer-Scholar: How Self-Education and the Pursuit of Passion Can Lead to a Lifetime of Success quite a while back. Infact I had given a stab at reading it when it was launched and accessible free for a week or so. I liked it then but would admit that i did not comprehend the concept of book completely then. In the hindsight, it was may be due to the way i have perceived academic education all though the life is quite different from the book. But I am glad I read it again, most of the things started making much sense.
In some sense, this book presents autobiographical picture of James Bach. In Software Testing circles, the name James Bach needs no introduction. I don’t intend to use this space to try to speak on his achievements but attempt at something more interesting and meaningful to me that is to attempt and draw a picture of his philosophy towards life and work just on the basis on the excerpts in this book. This is something that i enjoy doing whenever i read any autobiographical natured literature.

Here is my yet another humble attempt at that-

Paperless credentials are more valuable than Paper ones:
We live in a world that is full of Four-letter acronyms for certifications that are supposedly meant to be telling an external world that you are "Expert" at something. Most of the people seem to be caught up in the mad race to get certified. I have no problems with that as long as that meets your purpose.
The problem at core seems to be that the definition of the word "Expert" seems to have been limited to achieving a certain certification and i disagree with this notion.
All along James's life he seems to have relied more on his reputation of work rather than something written on the paper giving proof to his credentials. The paperless
credentials comes directly from the extent of work done and meaningful work at that. It is only true that your reputation reaches your prospective employer much before you do.

As Bach himself says-
Buccaneer leaders gained reputation through the tests they faced in their work, and their portfolio of tangible outcomes.
I do the same thing. By writing articles and teaching classes, I'm able to show my work. I also have a website and a blog. I wrote a book. Most of the work i do for paying clients is confidential but sometimes i have more easygoing employers who let me show off specific documents or programs i've written for them. That's my portfolio.
My portfolio and my performance on tests slowly gain a reputation for me. it's my reputation that brings customers from all over the world. I don't directly control my
reputation. By holding string opinions, I have gained both friends and enemies. On Internet, with blogs, forums and social networking websites, a reputation can be made almost instantly.

Being Courageous :
The conventionalist will find it very hard to appreciate this book. The reason as James outlines is in the form of a truth and that truth is- Society mostly rewards someone who achieves something significant while staying in the realms of the conventional thinking, while behaving conventionally. This is quite true and more so in Indian societies where the extent of achievement is considered in direct proportions to heaviness of the title one hold in the organization. And its an ideal recipe for superficial success and good for the acceptance in the so called societal norms.
Going against the tide is hard and it requires a purpose and a lot of self drive. Given the attempt to go against the tide is for a positive cause, sooner or later it does help find one's reason for existence.

Using Ignorance as a Power:
There's an Excerpt from the book-
Once, i was suffering writer’s block on a technical article about measuring the quality of Software, my brother Jon announced he would use his “Power of Ignorance” to help me write it. At the time, he worked as a dishwasher and had no experience in Software Industry. But by just asking me questions about my article, getting me to teach him the material, he helped me find a new way to explain it, and i quickly finished the piece.

As i have experienced, Ignorance can indeed be a power if used wisely. I have been in situations where my wife (not from Software industry) has helped me crack some tough situations just by asking simple questions that elude you if you think of yourself as more knowledgeable. Isn’t the true test for Software usability is giving a Software to a person who is ignorant of its benefits and checking how fast could he get used to the product and understand its functionalities ?
Testers often also face Tester's block i.e. having worked on one module for a long time they do tend to not ask obvious questions which a fresh person ignorant of module may ask. While preparing for a speech, I always tend to imagine delivering it to most ignorant and more knowledgeable person in the audience. That helps strike a rare balance.
As above examples prove, Ignorance can be bliss.

Handling criticism positively:
There's an Excerpt from the book-
Taking criticism well makes me feel tough. If being a buccaneer means anything, it ought to mean that i can look at scary truth in a face and smile. While I’m listening to someone tell me I ‘m not good enough, remind myself that this process is the way i achieve deep self respect. From that point of view, criticism is a gift. There is a childish part of me that feels wounded by any kind of criticism. But I learned a little trick from one of my mentors, Jerry Weinberg, about how to deal with it. I notice the feeling and say to myself, “Oh, that’s the childish part of me, again, doing what it likes to do. Funny little critter. It will settles down again, soon.”

If you are working with humans, be assured that one of the by-products is criticism. There is no escaping criticism for anyone. I used to often feel in my early days as a professional that some people have the habit of getting on your nerves and criticize you. But over a period of time, have realized how valuable the criticism can be, if you learn to handle it such that it works for you. As Robin Sharma says in one of his books- “Love your Irritations” i.e. Get into habit of loving anything or any person that irritates you, He or that situation is certainly your best teacher.
I have tried James’ way of handling criticism and (though he doesn’t need my acceptance to prove it) it certainly works! The earlier one learns to handle criticism, the better it is.

Expect to learn from Unexpected:
One of the things that i liked from the book and could relate to well was the “Principle of Peripheral Wisdom”. It says that- “most of what we learn is a side effect of something else we are trying to do.”
The learnings mentioned in this post are as a result of Peripheral wisdom i picked up after reading his book.

Helping Competitors succeed:
There's an Excerpt from the book-
I understood how to handle people who were smarter than me: respect them for what they are; help them get what they need. By doing that, I become a part of their story.
Instead of competing with them, I could join them, or learn from them. But even if I competed, my competition could have a new purpose: to enrich my opponent, not just myself. I could treat competition as a special kind of collaboration.

To me this is unconventional thinking at its best. To me this kind of thinking serves best if you are working in a team or working to lead a team. Conventional thinking says that being a leader you should be the one having the maximum knowledge on the area of work. But with the kind of era we live in, where once has access to more information than is ever needed, there are very high chances that you are leading someone who is more smart than you. Infact most of the progressive companies encourages Managers to hire someone who is more smarter than themselves. At core, this is something that can help a company leap and grow many-fold. The very fact that one acknowledges that the other person is more smart, knowledgeable that you are makes the work culture egoless and hence more productive.

Wandering of mind is not bad after all:
This is one of the eye-opening lessons for me from this book. I wrote about this in one of my earlier posts . From my earlier conditioning and experiences, i always perceived Procrastination as a negative trait till i read this book. Procrastination as i now appreciate is a natural human trait and something everyone possesses. James talk about the way in which you can turn it to your advantage. Wandering of mind is usually considered bad in study circles where concentration is treated as something great. Allowing your mind to what it naturally wants to do i.e. wander for few minutes and come back to task at hand will only make you feel better. Infact, I have used "The Procrastinate and Push Heuristic" and also "Plunge in and Quit Heuristic" while creating this post.

Of course, there were many more learnings and a whole new way of looking at the Self Education that one could learn by going through the book but to me the above learnings stand-out.

Are you game for trying out something unconventional ?