I know that this question will more than likely cause more of this ever ongoing debate and that the question itself is full of holes (stemming answers such as: “enough to who”, or “it depends”), but this is a thought that I wanted to get out there…
One of my previous blogs was about the “amalgamated role of the modern tester“, which was about how testers need to perform multiple diverse tasks in their role, such as Manual testing, Automated testing, Security testing, Performance testing and other various tasks. For each of these tasks, there is an element of technical knowledge required. Especially for performing Automation, Security and Performance testing. But is there a level of suitability for the technical knowledge that’s required? I believe that the answer for the “enough” part of the question does depend on each individual and how interested they are in the subject, but I also believe that there is a level of knowledge that can be reached that allows you to be competent to do the tasks that require specific technical knowledge.
Using myself as an example: My own, current role requires me to primarily perform manual system testing. One of my secondary roles is to write automated scripts using Watir/Ruby. I self-tought myself how to write the Watir scripts by reading books, using online material and through trial and error (a great free e-book for learning ruby is “Why’s Poignant Guide to Ruby” for anyone interested!). I found a method that works for me and fits in well with the organisation, but I do not consider myself to be a programmer in any way at all – I barely understand developer talk, so my technical knowledge in scripting is definitely not the highest level – I still have a long way to go, which I will continue on my path of learning, but I’m currently at a level where it’s comfortable for me to be able to write decent automated test scripts…
But, should our technical knowledge be as proficient as developers to be able to write automation scripts? I don’t think we need to be as technical as developers, but we need to be at a level where we are confident in writing and debugging the scripts on our own. That’s not to say that we shouldn’t be striving to achieve the same level of technical knowledge as a developer! There would be definite benefits at being at that level, such as being able to know of easier and more efficient ways to write your code…
Personally, I’ve always liked the motto: “Every day you learn something new is not a day wasted” (although I cannot remember where I heard that saying and who actually said it), and I think it’s important that we do invest our spare time learning new skills. Reaching an acceptable level to be able to do the job in hand shouldn’t stop us from continuing to strengthen our technical knowledge on the subject.
Personally, I’ve always liked the motto: “Every day you learn something new is not a day wasted” (although I cannot remember where I heard that saying and who actually said it), and I think it’s important that we do invest our spare time learning new skills. Reaching an acceptable level to be able to do the job in hand shouldn’t stop us from continuing to strengthen our technical knowledge on the subject.
So we know being technical is required for certain testing tasks (Automation, Security, etc), but what if we look at it from a different angle… If a tester’s role is purely Manual testing, is there any need to be technically minded? If your main focus is to plan and perform system testing from a user’s perspective, this involves testing the system’s UI and performing actions which represent how the user plans to use the system. So in a sense, technical knowledge is not really required for this… Or is it??
When we are investigating bugs, it can be very useful knowing how to read source code to find out further information about the defect which can be supplied to the developers in the bug logs. You can discover more useful information from the source code too, such as page load times… It’s also helpful if we are able to browse the servers to view any “back-end” log files for information too. And if we think about databases, there might be a situation when you need to query the database for more information, or set up test data, so it’d be useful to be proficient in writing basic SQL statements, for example.
What do you think? Is it essential for a tester to know how to read code or know the depths of the back-end infrastructure? Does it really matter if we are “technical” or not? Is it a case where we are trying to overload ourselves? After all, if we were as technical as developers, would we just all be developers?
I’m curious as to why you say 90%? and why not just get to the 100% level or why is 80% not suitable?
I’m thinking in terms of the developers that I know, where they have studied programming at uni (but were coding even before that), are knowledgeable in multiple programming languages, etc… Should testers need to know how to code using C++, VB, Java, Ruby, etc? And if that IS the case, then would that not push testers into developer roles?
I think the discussion applies to your situation also, where if you move into a role that does require domain knowledge, or if you simply want to get more involved in the manual testing side of things in your current role, then it would be essential that you expand your skills into this area. But again, How much knowledge is enough? do you learn enough that gets you by in that domain, or should you become as complient in that domain as the experts of that domain?
Familiarity with programming?
The ability to program?
The ability to use tools?
The technical knowledge associated with the domain in which the program works?
The ability to use a computer?
Terminology can be difficult. Especially when communication is key in our line of work!
Through time though, as I moved into roles where I have been the sole tester, I’ve picked up these skills through being exposed to them by working so closely with developers (although I know I still have a lot more to learn), and I’ve come to realise how useful they are in aiding me with performing my testing.
You make a good point! I guess in my own experience, the majority of my time as a tester has been as the sole tester in the organisation, so I’ve had to kind of be a “jack of all testing trades” by performing testing as well as writing automated scripts, doing performance testing and other non functional testing methods.
It is very important to utilise other people’s skills and seeking their knowledge through some sort of knowledge sharing scheme (be it emails or a fortnightly discussion group, or anything else along those lines) would be a great idea!
It’s so important to be able to communicate effectively with other project members, and to build up a good relationship with them so that they will be happy to help you.
I dont think its a waste of time for developers to spend some time with testers. I think its very useful and both sides will learn from it!
Little things like this work – you’ll find that the developers will take the time to help you better your work and processes too!
I come from the same situation, where I have never really had a technical background. I always thought of myself as having no technical skills at all, but I’ve realised that I do have a little bit of technical knowledge (I know how to write SQL statements to query a database and check or update data, I know how to write Watir automated scripts, I read log files, I read the source code regularly for extra information (such as page load times, etc). These might be minimal “technical” skills, but they certainly help make my testing more effective and are enough for what’s required.
Roles within different organisations will require different skills for sure – I’ve worked in roles that didnt want me writing SQL scripts – they purely wanted me to test from the systems front end, and other roles that had a complete seperate team that wrote the automated scripts, so those skills werent needed. So there is definitely a level of “enough-ness” that you can reach to effectively do the job in the role that you are in.