One year as a test consultant – a retrospective

Throughout my career I have mostly worked in house for a “software house”, with which I mean an organisation that builds software as a core of their business model. Even my times at Finalist IT Group and Quantiq X-Media, when working for external customers, and in the case of Finalist on site at the customer, I have always worked for organisations that create software to sell or sell the services of developers.

When I left Spil Games I decided I wanted a change in my career? or better said, i wanted to try different side of the business. I had spent the better part of the last 4 years managing people and processes and enjoyed it a lot and now it was time to move my skills to a different level making sure enjoying myself as a software tester is as well in scope as the managing bit. I really wanted to get back to what I like most: software testing, setting up a testing process, showing developers how things can be better when continuous testing is going on, in short “finding solutions by executing and not just managing”.
For the last year I have worked as a test consultant at Polteq Test Services. In this year I have touched a range of things in my work I am extremely passionate about, setting up test automation, attempting to help testers improve themselves and the product they work on, helped review a book, used my network to help companies deliver better products by having them tested, helping out writing commercial offers for potential customers of Polteq and probably more I don’t even remember.

So far I have quite enjoyed the variation in the work and quite enjoy being on site at the customers. The one thing I truly miss though is the direct interaction with my colleagues. When working fully in-house there are always steady colleagues, who share your thoughts and worries about the employer, the atmosphere etc. In consultancy however, quite often you do not have your own colleagues on site, you’re mostly working with the customer. So now and again you want to be able to vent frustrations, whether they are about work, traffic or your customer, it is not always easy to do that when on site.

A side effect of working for a company specialized in software testing is, that I am a lot more involved in the “community” and development of the trade. My twitter stream is a lot more active, I have started blogging about my work, I try to stay in touch with communities and groups on LinkedIn and of course on Software Testing Club.

Extra personal effect of me no longer managing people, I am generally a lot more relaxed at home, I have learned to leave my work behind me and not (well, ok, hardly) take it home with me.

Overall looking back to this year I can say that I enjoyed my new position as a consultant. My expectations were quite high to be honest and  I enjoyed it even more. So far it turned out to be beneficial for both my professional and personal life. I used my skills and capabilities in a totally out-of-box way, discovered new talents and potentials and tried out quite some new activities (book, big presentations, creating a whole new concept / theory, etc).  At the moment I consider this a very good step for my career as this kind of job keeps me motivated and inspired.

implicit thought process made explicit

It is surprising to experience how difficult it is to make a thought process, which to me is second nature, explicit and find a way to share it with others.

When I started putting my thoughts on paper, I tried to put it in writing at first. This however resulted in a fairly strong writer-block. I had no idea where to start and how to get to anything that made sense to anyone, including myself.

I then switched to drawing it out on a piece of paper. After restarting several times I realized this also was not going to work.

Then it occured to me: why not try out a tool that is actually meant to capture the thought process, a mindmapping tool! So I started FreeMind and have started to actually use it sensibly.

In just a short while I managed to get clear how I quickly assess, in my head, what needs to be done.

Now the real challange starts of course. I now have a bunch of erratic mind maps which I now need to structure into an actual processflow, I need to figure out a way to explain based on what I assess the situation other than “experience and knowledge”.

Great feeling to get something that has been locked in my head for ages written out. Next up, going to try to sort things, see if there is some form of order in which I do this in my mind.

I am going to try to do that by moving from the mindmaps I made in Freemind to a tool that was posted in the Software-Testing news-group the other day: treesheets. That should help me get from a mindmap like tree to something more structured like a spreadsheet.

Funny how excited I am over something as simple as getting a mindmap with an overview of stuff that goes on in my head!  Judging by the mindmap, I have a messy mind…

My personal, professional code of ethics as a tester

Inspired by both my own previous post, but mostly by a response to my post on the Software Testing Club by Ainers Galvans I decided to follow his good example and write what I believe to be my professional code of ethics as a tester.

What is a Code of Ethics?

A code of ethics, or ethical code, is, in my view the following:

  • a set of rules set up to understand the difference between ‘right’ and ‘wrong’ and to apply this understanding in my decision-making.

My professional code of ethics

I have tried to keep my professional code of ethics short and understandable. Where I believe more than a one-liner is needed I have tried to keep the explanation as short and clear as possible

  • I am always honest and do not attempt to prettify information or feedback. I expect others to treat me likewise.
  • If I can get a job done in less hours than agreed, I will do so and inform my customer that the amount of time spent was less. If I cannot get a job done in the amount of hours agreed, I will inform my customer of this as soon as I can.
  • I honour (mutual) agreements. Both verbal and written agreements as well as meetings. When I agree to something I will do what I can to honor that agreement. E.g. when I agree to come to a meeting I will do what is needed and possible to be at that meeting.
  • I try to waste as little time as possible. Both my own time and my customers’ time is valuable so if I see a way to speed things up without losing efficiency and quality, I will try to speed things up.
  • I need to see the point and added value in the things I am supposed to do. A task or a job that seems pointless to me and of which the added value remains unclear to me gives me zero motivation, which would reflect on the quality of the execution, therefore it is a must for me to see what the added value of  the task is.
  • I will always try to learn something new, regardless of the situation.

Generally I try not to compromise this set, but it is of course not a black and white set of rules, there are shades of grey as there are in all things in life. These are my professional basics which i personally am trying to stick to. There of course might be quite some additional insights to build up on top of those, which are appropriate for and depending on each customer / situation / task etc.

Work ethics – being professional?

No matter where I have worked I always believed, and still do, that I have a strong and sensible work ethic. I expect to have to work hard in order to learn new things and grow in my role. Sometimes working hard means traveling a lot, sometimes it involves working long hours or weekends without being paid extra for it. Quite often I have asked myself whether it is all worth it, generally speaking it always was.

I enjoy learning new things, new techniques or technologies. Learning means you need to invest in it, do something actively, like making an extra effort on top of your regular day-to-day life.

In return for making an extra effort, I generally get appreciation from my colleagues and customers and gain new insights and knowledge. On top of getting appreciation, I also get credits for wanting to go the extra mile, which results in goodwill from both customers and colleagues and strengthens my reputation as a professional.

Of course I too complain about things. Obviously there are things I would like to see done differently in my work. However I try to take the active approach to introduce the improvements and make life easier for all those involved.

I truly believe that in a professional working environment it is not a lot to ask people who complain – and rightly so – about things they consider wrong or up for improvement to be constructive and try to change these things, look for solutions rather than keep whining. Quite often however, when you ask the complaining people what are they planning to do to make things change, silence is the answer.

I understand that not everyone has the same drive for his work, some people rolled into a profession by accident and are not motivated to grow their, work related, knowledge and just work to make a living. They, hopefully, have something else that gives meaning to what they do and which motivates and inspires them everyday. Personally, I enjoy my job. I like testing, I like finding solutions and moving  software testing to the next level, I enjoy solving testing problems and get satisfaction from deep diving into software testing theories and challenges. I also really enjoy spending time with my family and friends, but that does not make them mutually exclusive in my view. Just as I invest in friendships and my relationship with my wife and family, I invest in my relationship with my employer and my customer.

In my professional life I try to address things I do not like or think could be better (at least in my opinion). This is why it still surprises me that quite often I run into people who are not happy with a lot of things, but when you ask them what do they propose to do about it you get no answer.

Example: as a consultant I do not have a lot of direct contact with my employer, ergo, communications between my employer and myself (and my colleagues) is not always as supple and swift as one (and the company) would like. Since I am generally at a customer site I have to read emails from my work in the evenings and weekend. We use quite some online, or cloud-based, tools to make sure we stay in touch, such as Dropbox and LinkedIn. So on my personal smartphone I make sure I have the LinkedIn app up and running so I can keep in touch with what is happening “back in the office”, even during weekends or when at a customer site where I have no access to anything but the systems we’re working on and with (bank-like institutions usually lock off their network so you also cannot get to the outside, and rightfully so).

To make all of this even easier we now have received a smartphone. Not exactly the one I would have preferred, but hey, who am I to complain about an iPhone? I had to configure the mail on it, install a few apps on it, but I now have a fully mobile miniature office with me. My employer pays for the bandwidth I use on the phone so no added costs to me, just added ways to communicate with the “home front” be it my employer, my colleagues, my assignment or my family and friends.

You’d think wonderful inventions like this make life easier for those who do not regularly read their company email or never participate in a discussion on LinkedIn. However instead it raises even more questions and reservations, such as “am I required to configure email on the phone?”, “why wasn’t this done for me already?”, “do you now expect me to read my email in the evenings?”.

Am I crazy to enjoy my work and wanting to go that extra step, if reading your email indeed should be considered an extra step? I think I am the normal one and those moaning and complaining are the crazies, but once you start noticing that a majority of the people around you are crazy, it makes you reconsider. At least it did for me.

I started to wonder whether it is normal that I feel connected to my work and to my employer, that I like responding to questions, statements or comments posted on forums, that I do read my email at the most improbable times, that I do not mind driving 400 km’s to go to my colleagues on the other side of the country to talk to them about software testing and things that keep my mind occupied.

I still believe I am the normal one, just a normal person part of a minority with strong work ethics.

Where are the technically inclined testers?

–Edit–

This would have been better had it been called something towards “Where are the technically curious testers” as Anna Baik pointed out. The wording is not perfect.

//Edit//

Over the years I have worked with a whole range of testers, both functional and technical, who have shown different levels of comfort with the technology under test. Some were good, some were great and others I simply never want to work with ever again. The latter ones, to me, are a problem we are currently facing in software testing. There seem to be too many software testers with a lack of understanding how software is actually built, how the internals of a program work.

I have never understood how one can be working in technology, or to be more specific in information technology and not have at least a base grip on how things you are supposed to test work? Even when you are purely focussed on functional testing, I really do not understand how you can not grasp the basics this entire industry is based on.

How come that even now, when it is becoming more and more clear that software testing is an important specialisation within the IT industry we still see a lot of testers with no technical knowledge what so ever in this industry? I realize that historically there was the idea that “anyone can be a software tester”.  I am just not convinced that statement still holds true.

Take for example a building inspector, that is also a tester of sorts, no? He verifies whether all the rules have been followed of proper architecture, the design has been implemented as promised etc. Imagine you are having your own house constructed and this building inspector comes by. You put your hopes on this person to validate that your house is what you want it to be: warm, safe and as you requested.

This building inspector, upon arriving, grabs his excel sheet with the requirements for the house and checks the ones he can verify, without needing any knowledge of architecture or constructing a house for that matter. He then gives you this checklist and tells you he has functionally covered all things of your house.

Considering that you live in an area with lots of snowfall in winter you ask this person whether the roof can manage with a load of snow on it in winter and the heating will not collapse under the strain of having to heat the entire house in a snow-storm.

He says: I don’t know, I am not an architect nor a construction worker, I am merely the building inspector. I just go through this list of things I need to check, why would I know anything about building a roof for a house or what the heating can take? You should probably ask the construction workers what they think.

Would this give you faith in his verdict that the house is indeed what you wanted?

I believe not, yet this is a practice that i see happening fairly often in software testing. So where does it still go wrong in software testing? How come there is still this tendency to believe there is no need for understanding software when you test it?

How often do you see the same bug coming by when testing an application, once you see a bug more than once, in a very similar form, you should be able to come up with the idea that there might be an underlying issue going on. Instead what I  often see is that for every occurrence a new bug is created in the bugtracker. To understand that there quite likely is one underlying problem, the tester doesn’t need to know how to program, you should however have a basic idea of how a program is (or should be) built up and if you are not certain whether it indeed might be one and the same issue in the code, how about talking to the developer?

When exchanging ideas and thoughts with other testers on twitter and forums etc I quite often see an amazing lack of knowledge in this area. To make things even worse, a fair share of testers seems to have a degree (bachelor or master) in computer science yet have no clue what, for example, a regular expression is. Is it just me, or is this indeed a worrying thing? When reading through the Computer Science curriculum of an average university here in the Netherlands, I do see all kinds of interesting subjects and descriptions that would lead me to believe basic programming is part of what you get taught, however when talking to the graduates that end up in software testing I see nothing of that knowledge.

Where are the technically strong testers? The ones that can have a discussion with developers about how the structure of a program was setup, who can tell a developer that the SQL query he wrote is extremely inefficient? I know I see some of them online, these are the testers I enjoy following on twitter and on blogs, but there must be more than these happy and noisy few. Where are they hiding? In my experience there are not enough of them, at least not in the Netherlands.

— Edit–

There is a nice article dealing with similar questions and frustrations on testnieuws.nl: http://www.testnieuws.nl/2011/06/06/tester-praat-ook-eens-met-een-ontwikkelaar/ (sorry, it is in Dutch, if you do want to attempt have a look at the google-translated version)

 

–Edit 03/11/2011 —

Really nice to read Elisabeth Hendrikson’s article on a similar subject, but from a different point of view: http://testobsessed.com/blog/2010/10/20/testers-code/

I am sad to see though that there are people commenting on her article and are calling QTP and especially Selenium basically record/playback tools. If you have ever used either you know that QTP is a hell of a lot more than just record playback and Selenium is clearly NOT a record playback tool (unless you mean the Selenium IDE rather than the entire toolset of Selenium.