Wednesday, 20 July 2016

What do we mean by testers learning to be technical?

I recently read a post by Justin Rohrman entitled "Do testers need to code".  The following line gave me some concerns:

"So, I think that testers do need to learn some programming skills now."

Now I wish to begin by stating I am not against testers learning to code  if that is something they are interested in and they want to learn.  On the other hand it may not be the best value skill you could bring to a team, especially if you already have 5-6 exceptional coders on your team.   Justin within the article tries to align to this thought with the following:

"My new feeling is that testers need to learn to program, or at least become more technical –write SQL, use developer tools effectively, read code — for any sort of longevity in the field. "

I have blogged about this in the past- 'A discussion on do tester really need to code.' in which I talk about adding value by learning the syntax of code.  I was asked on twitter by Marcel Gehlen to provide an example of what I meant by this.  I replied with the following:

'I understand the syntax of the french language but I am terrible at speaking it.'
The main point of this update to the 'testers need to code' debate is around what we mean by being 'more technical'?  To the majority of people and from the many articles I come across this implies learning to code.  I feel this is too narrow and at the same time limits the potential and opportunities testers may have.  As an example if you now have a team in which everyone can code and there is a need to reduce the team due to financial and business pressures.   If the decision being made is based upon coding skills then I feel testers could be at risk.

Where does this learning to code end?    In the modern development world of 'devops' are we now going to state that operational people and marketing people should now learn to code?  we could end up with an over saturated market of half decent coders.  What skills are going to make testers stand out and be seen to be adding both team and business value?

Taking a step back what do we mean by coding?

I can writing scripts in bash which to me is similar to writing test script in the sense of logical following steps.  At the same time I understand the command line interface to enable me to deploy a test environment.  Going forward into the devops model I can write dockerfiles to create containers..

#
# Super simple example of a Dockerfile
#
FROM ubuntu:latest
MAINTAINER Andrew Odewahn "odewahn@oreilly.com"

RUN apt-get update
RUN apt-get install -y python python-pip wget
RUN pip install Flask

ADD hello.py /home/hello.py

WORKDIR /home

Example from http://odewahn.github.io/docker-jumpstart/building-images-with-dockerfiles.html

I understand how to use ansible to deploy an environment to enable me to test and run automated checks.

These are, what many would class as, highly technical skills.  However as Jerry Weinberg just posted about 'Becoming a Better programmer; ' there are other skills that are of value to a team and to the business that many would not class as technical.  The ability to get people to work well together and collaborate and communicate is a highly desirable skill to have.  Since it is classed as a soft skill not a lot of emphasis is placed upon this as a skill testers should learn.

What about analytical skills, as more and more companies move to a devops model for software delivery, the skill of being able to determine patterns within the software from all the data and collate that data to help improve try and improve the quality is a highly demanding and technically challenging skill.  I can see this skill becoming highly desirable in the future.  Maybe a tester could invest their time learning this skill?

Then we have the other areas such as an understanding of human behavior to help influence the design .  Learning about social science and systems thinking to help see the big picture and overcome obstacles for the team.   I have been running a series of blog posts on skills testers should learn away from the traditional 'must code' school of thought.  Using your time wisely to practice and improve these skills can help you become a better tester and more importantly show your value to the business.

A few examples are given below (feel free to browse my blog for other examples)




Also with your testing skill set you could mentor, coach and teach others about testing and how they can use that to help improve the software.  Set yourself a goal of coaching the programmers in simple test techniques that they could look to add to their frameworks to enable you to focus more on the difficult to find issues using exploratory testing .

Again I wish to state I am not against tester learning and if they feel they have a passion towards coding then go and do it.   At the same time think about what else they could learn that adds both team and business value.




Tuesday, 5 July 2016

Introverts and Extroverts - stop labeling yourself.

This post maybe a little controversial and uncomfortable to some readers.  As social creatures we like to label ourselves as certain types.  We like to be part of groups, tribes and social circles. The issue is when we, or others, use these types to defining ourselves and limit our potential.

The focus of this article is looking at two specific personality types which always seem to pop up in conversations.

'Oh I am an Introvert"

'They are they the life and soul of the party, surely they are an extrovert'

If we ignore the fact that most personality testing are flawed, especially Myers-Briggs
"Generally, although not completely unscientific, the MBTI gives a ridiculously limited and simplified view of human personality," Nothing personal: The questionable Myers-Briggs test - Bean Burnett - The Guardian - March 2013
 Then what we are left with is the human desire to 'fit in' and be part of a group.  At the same time by using these labels we can provide excuses for our behavior.

What does it really mean when we say Introvert or Extrovert.

The merriam webster dictionary defines them as follows:
Introvert -  a shy person : a quiet person who does not find it easy to talk to other people
http://www.merriam-webster.com/dictionary/introvert
Extrovert -  a friendly person who likes being with and talking to other people : an outgoing person
http://www.merriam-webster.com/dictionary/extrovert
For those people who know me personally, how would you label me?

I am sure the majority would define me as an extrovert, an outgoing person who like to socialize and talk to others.

However there are times and situations in which I can by shy and find it difficult to talk to others.  For example at large social gathering I can become very inward.  A recent example of this was at Testbash in Brighton where they organize a social event by the beach.  I find these situations very difficult and draining.  I put on a brave face but inwardly I just want to run and find a quiet corner  and be by myself.  The classic signs of an introvert?  Then the next day I am on stage in front of 200 plus people giving a talk and feeling wonderful, relaxed and enjoying the moment.  Wow now I am classed as an extrovert!

For me the key here is we need to stop limiting ourselves by defining our behavior with a label.   Depending on the context you can be an introvert or extrovert, and there is nothing wrong with that.  However if you use these labels to the extreme you could limit opportunities, growth and fulfilling your true potential.  Throw away the label and use your instinct to drive what you want to achieve and then anything could be possible.

Oh and a message to those who work in HR please stop using personality tests to meet some unreasonable arbitrary 'will they fit' tick box.  You may be excluding people just because of how they feel on that day rather than based upon the merits and skills  of the individual.