Wednesday, May 30, 2012

What Testers Need to Learn

Sunday night I attended a live webinar by James Bach entitled "What Testers Need to Learn" that was put on by Tea time with Testers. It seemed like an interesting topic so I joined (it only cost $30).

The webinar got off to a slow start thanks to some technical issues with GoToMeeting but as soon as they were resolved James jumped into his talk: his personal vision of the skills testers need to have based on his many years of experience coaching testers.

James shared his recently updated tester's syllabus (a free download from his site) and then walked through it explaining some of the areas. The syllabus he shared was actually a part of a specially created slide deck composed of existing materials but arranged for this talk. You can download the slide deck here. If you haven't seen (or downloaded) the syllabus these are the main areas:
  1. General Systems
  2. Applied Epistemology
  3. Social and Cognitive Science
  4. Mathematics
  5. Testing Folklore
  6. Communication
  7. Technology
  8. Software Process Dynamics
  9. Self-Management
A synopsis (what I remember) of the walk-through:

General Systems theory involves understanding what makes systems complex. It's a fundamental skill of testing based on how to approach a system, break it down and then understand what's there. James recommends An Introduction to General Systems Thinking by Weinberg.

Applied Epistemology. Epistemology is the study of how we know what we know. Scientific Thinking helps us understand applied epistemology. Testing is the process of creating experiments and exploring them so understanding how to design experiments is also very critical. Understanding written and un-written requirements requires an understanding of epistemology.

Cognitive Science. The difference between how people should think (a factor in epistemology) and how people do think is cognitive science. As a tester we we need to understand how people's perception and biases factor into their work. Human factors relate to how people use and misuse systems. Testers are constantly learning so learning theory is huge.

Mathematics. Testers seem to be bad or afraid of mathematics and what you get is a system where people misuse / abuse mathematics. Counting test cases or metrics are often faulted here. People who don't understand mathematics are too afraid to ask or question assumptions. The number one thing James uses is combinatorics or as he describes it "counting things in combinations". Graph Theory is also big for identifying different pathways in testing. You don't need to be an expert in these things but you need to know enough to be comfortable learning more.

Testing Folklore. Folklore dominates the testing field today. Testing folklore are ideas that are widely spread in the industry and yet poorly found in scientific practice / not based on scientific method. Examples include listing testing techniques, poorly thought out definitions or lists of words, testing certification, most things the ISTQB does, certain ideas about what testing is, etc. Communities of testers are found here including the context-driven school that James belongs to. Highly educated testers need to understand this, if you don't want to be an expert you can ignore it. (Gotta love his attitude.)

Communication is important because testers need to write, make reports, and design documentation for the appropriate audience. Social Legibility involves presenting yourself and your work in a way people think they can understand.

Technology. The more you know about technology the better you'll be as a tester. For example, programmers who don't know anything about testing can be good in many respects because their knowledge of technology is great. This seems to be the area most testers understand the most. It's helpful to know technology but great testers need to know about the other things as well.

Software Process Dynamics is important though not as important as other things. (No mention of how it ranks among its peers.) Software process dynamics is about how projects go wrong, why its good to find certain types of bugs at certain times, etc.

Self-Management. A lot of things are lumped in here because it's a big deal in testing. This area is entirely non technical and is about being a grown-up: make plans and then do things. Ethical issues, contracts, accounting, record-keeping, being helpful are all lumped in here.

After the overview of the syllabus James answered some participant questions.

The first was asked by a gentleman who worked or was related to Tea time with testers. I think the question was how testers should balance learning with time commitments and how effective someone can be at learning. James' response was something like:
You have to learn on the job, then work nights and on the weekends to be a great tester. Read a lot and try to experiment with a lot of things. Weekend Testing can help. He and others offer free coaching sessions via Skype. Other options include working with a peer group or other like-minded people, preferably not alone. Try to find somebody to work with and if you come up empty ask James. Also build a step by step portfolio of your work - where a portfolio is a set of your work that you can show to other people that demonstrates what you do as a tester. 
There were a few more questions but since this webinar took place from 10:20 PM PST until 11:45 PM PST and those questions didn't interest me I didn't pay attention. =)

James mentioned a few of his recommended books, found on page 6 of the slide deck. Like I mentioned above I've posted a copy in my Dropbox folder here. All the people James respects as experts read and study books veraciously. They also have a support group that does the same.

The last part of the talk focused on skills he sees missing or needing improvement in the people he coaches - also found in the slide deck. Rapid Technical Self-Education, Test Framing, Test Factoring, etc. are some of the skills he focuses on when coaching. Student Syndromes are common problems he sees.

Lastly James shared and briefly discussed his Exploratory Testing Dynamics paper. Unfortunately at this point I don't remember what was said about it. I was recording the whole broadcast (which hopefully someone will make available online) but some how it managed to crash and I lost my recording.

My (testing) learning problems are related to asking for help, not within my team or company but with people I don't know. I work alone the majority of time but really I need someone to work with that can help push me. I think it's time for a coaching session from James.

3 comments:

Thiago Bernardo said...

Nice post.

Chris Kenst said...

Thanks

Bob Jones said...

This should really be entitled "What software testers need to know".