Am I a Tester or a Programmer? Who am I?
Abhijit Navindgikar: “I am having one question regarding software testing. Currently I am working as a software tester. I am having 3 years of experience in manual testing and having the basic knowledge of C/C++. Is it necessary for me to learn new technologies like C# .NET for future prospects in testing? Is it necessary for the tester to have the programming skills also? (Till know I didn’t feel that tester need to know the programming but let me know your views). Also will it be possible for a black box tester to shift his career to white box testing? If yes what steps need to follow to start the same?”
Lakshmi: “Recently I was browsing some of the testing sites and came to know that "No knowledge on programming language is a hindrance to a tester’s career". Is that correct? Really, programming language knowledge is that much necessary for a tester? I am not able to digest this. Please help me.”
John: “My test manager feels that all testers must have decent programming skills. He is so much obsessed with his belief that I fear he may go ahead and fire testers who are not so good in programming (even though they are quite good at testing). Is there a way to change his mindset without hurting his ego?”
These are excerpts of few emails from my inbox. These are kind of questions that always have made me to think. Every time I think on these questions, some more questions start popping up in my mind. Questions like:
1. Knowledge of programming and effectiveness of a tester – is there a connection?
2. Can a good programmer make a good tester?
3. Can a bad programmer make a good tester?
4. Can a non-programmer make a good tester?
5. Can I think of contexts when knowledge of programming can enhance my testing?
6. Can I think of contexts when knowledge of programming can hamper my testing?
7. Can I think of contexts when ignorance of programming can enhance my testing?
8. Can I think of contexts when ignorance of programming can hamper my testing?
9. The list of questions continues…
Abhijit Navindgikar: “I am having one question regarding software testing. Currently I am working as a software tester. I am having 3 years of experience in manual testing and having the basic knowledge of C/C++. Is it necessary for me to learn new technologies like C# .NET for future prospects in testing? Is it necessary for the tester to have the programming skills also? (Till know I didn’t feel that tester need to know the programming but let me know your views). Also will it be possible for a black box tester to shift his career to white box testing? If yes what steps need to follow to start the same?”
Lakshmi: “Recently I was browsing some of the testing sites and came to know that "No knowledge on programming language is a hindrance to a tester’s career". Is that correct? Really, programming language knowledge is that much necessary for a tester? I am not able to digest this. Please help me.”
John: “My test manager feels that all testers must have decent programming skills. He is so much obsessed with his belief that I fear he may go ahead and fire testers who are not so good in programming (even though they are quite good at testing). Is there a way to change his mindset without hurting his ego?”
These are excerpts of few emails from my inbox. These are kind of questions that always have made me to think. Every time I think on these questions, some more questions start popping up in my mind. Questions like:
1. Knowledge of programming and effectiveness of a tester – is there a connection?
2. Can a good programmer make a good tester?
3. Can a bad programmer make a good tester?
4. Can a non-programmer make a good tester?
5. Can I think of contexts when knowledge of programming can enhance my testing?
6. Can I think of contexts when knowledge of programming can hamper my testing?
7. Can I think of contexts when ignorance of programming can enhance my testing?
8. Can I think of contexts when ignorance of programming can hamper my testing?
9. The list of questions continues…
I have seen quite a lot of such “Do testers need programming knowledge” kind of debates, especially since Microsoft started distinguishing its testers as Software Test Engineers (STE) and Software Design Engineers in Test (SDET)! And this debate gathered momentum as Microsoft started shifting weightage from STEs to SDETs while hiring (and firing) test engineers! However, I am not going to extend the STE Vs. SDET debate in this particular post of mine. Rather I will try to focus on the need of programming knowledge for a tester.
To me the single sentence answer for the question “Do I need programming skills to excel as a tester” can be – “It depends”. It depends on your particular context, the type and complexity of the AUT [Application Under Test] and more importantly your testing mission. Blindly hiring testers who can code may prove to be a bad idea, especially if you are neglecting your testing mission while taking such a biased decision!
Having said that, there can be contexts where a tester who can code, can be an asset for the test project. Think of scenarios where testers need to automate GUI tests. Even if the tester might be using some so-called record-and-playback kind of tool (WinRunner, QTP, IBM Rational Robot blah blah...), knowledge of programming, can be an added advantage. That can allow a tester to tweak his tests at script level to make them more powerful and flexible! e.g. The tester need not re-record his tests each time a object name for a recorded test object is changed (may be due to recent code refactoring). He can simply go and change that particular object name from the script. As Danny Faught talks in this interview, "Test automation requires programming skills. Plain and simple, no way around it. No tool can get around that."
In cases where the organization (or the client) can not afford acquiring license for costly automation tools, the programming skill (in most cases knowledge in some scripting languages like Perl, Python, Ruby, JavaScript and markup languages like XML, XSLT) can help the tester in setting up a home-grown test driver framework to cut down the license cost of Commercial tools and at the same time can result in a customized tool that fits better for your testing requirement. Forget about test automation, testers with programming skills may detect defects earlier in development cycle and may also be able to pin point the cause for the defect (provided that the tester is aware of the underlying code and the system architecture). This may also help the tester in finding other areas in code where there can be similar errors. A tester who has a development background can also participate in code reviews, can debug problems, perform unit testing and identify patterns in the code that are error prone. If you are a tester, knowledge in programming can sometimes earn you greater credibility among the programmers.
But does this mean a tester without coding skills is useless? Of course not! To say Manual Testing (Sapient Testing, the James Bach way) is losing its value, in my opinion, is too early to jump into any conclusion. With user's expectations increasingly higher, it would be foolish to lower its value. How many testers do unit testing in this agile era of software development (where the programmer has to write unit tests for his own code snippet)? A good tester is a good tester for his ability to test, not for his ability to code! After all, a tester gets paid to test, not to code. Although coding background can help in certain contexts to test better, that should not be over-generalized! Test automation can never replace manual testing. I think, the same can be safely said about programming skills of a tester. A tester with coding skills can not replace a tester without coding skills. If asked to test an application, both of them will find different sets of defects. Think of user experience/interface related defects for example. Or for that matter, think of scenarios where you don’t have enough time to test. Would you sit down to do code review and perform a cause and effect analysis using your programming skills or would you rather exploratory test it right away?
If I were a test manager, I would rather hire testers both with and without coding skills. Testing is all about flexibility! Each and every member of the testing team can’t be expected to have equal skill sets and equal areas of expertise. Testing as a craft is evolving into different specializations and it must be understood that each kind has its own importance. So it always helps to have a testing team comprising of a variety of skill sets. Testers with different specializations (with or without coding knowledge) are not mutually exclusive rather they should compliment each other. What do you think?
Happy Testing...
Hi,
ReplyDeletePerfectly said :)
But now-a-days, the hiring methodology has been changed. They are looking for the programmers for testing (not only in my organization, i enquired many of them regarding this) We hope that this tradition should change.
But one thing what you said is right ie., programming knowledge helps tester to perform better and in a confident manner--i hope so..
Thanks a lot Debasis.
One more thing I would like to say is "There is typographical error --the name of James Bach ---that is written as James Back...Please correct me if I am wrong:)
Bye
@ Lakshmi,
ReplyDeleteI really appreciate that you could catch my typographical mistake. I have corrected it. Thanks a lot. There were few more typographical mistakes, which was reported to me by my friend Santhosh. He is the second person who gets to read my posts before anyone else gets to read them [the first person who reads my posts is of course me]! He is kind enough to do proof reading of my posts before I make them live! Thanks Santhosh.
Before I publish any of my posts, I use Microsoft Word's spell and grammar checker to test their sanity. This time these typographical errors managed to get away because I had mistyped words, which were words that I did not mean to write, but somehow they were valid words with different meanings! e.g. in place of "blindly hiring testers" I had mistyped "blinding hiring testers", in place of "James Bach" I had mistyped "James Back" and MS Word could not catch them as they were correct as far as the spelling and grammar was concerned! I wonder if one day MS Word would be intelligent enough to judge what the user actually wanted to write, even if the mistyped word had a meaning in the dictionary!
May be, this provides yet another example, which shows how, the human factor in testing is much more powerful than any kind of automation tool! Here in our case, my typographical mistakes were caught by Lakshmi and Santhosh (human beings with power to think and decide what is right and what might be wrong) where as they were missed out by the tool (Spell and Grammar checker of MS Word)! Any thoughts?
[Note: Whatever it is, I admit that I should have been more careful while publishing my post. I will try my best not to allow any leakage of mistyped words in my forth-coming posts. Thanks for understanding that I am also a human being who is prone to failure. Yes, I also fail, at certain times. And here is a small example of that!]
Happy Testing...
-Debasis
Thanks Debasis for your concern.
ReplyDeleteAny type of typographical errors can be tolerated (ofcours, it should not--as a tester) , but the names of some great persons, we cannot.
That made me to speak out.
@ Lakshmi,
ReplyDeleteI am really thankful that you pointed out the mistake. I could not have forgiven myself for mistyping the name of someone as respected as James Bach (even though James might have forgiven me for it). As a tester, I would never want you to tolerate any kind of mistakes that you find in my writing. Feel free to correct me in future, though I am sure you won't get much of such chances! :)
Happy Testing...
-Debasis
Hi,
ReplyDeletegood comments!
Now a days companies prefer hiring testers having some kind of programmimng knowledge.Also it is trend to shift the nonperforming programmers to testing team since people consider testing as a simple job. In most of the companies value of bad programmer is higher than value of good tester. People expects from tester that he /she should be able to do some kind of white box testing(even If they are not hired them for the same purpose)
Well ..
ReplyDeleteLet summarise what you are trying to say --
Having coding skills helps tester but that is not a mandatory skill.
so ... testers out there without coding skills .. go and pickup one.
Those who are not willing or ready invest in learning some programming ... that is OK you can still be a good testers.
Personally knowing technology programming helps... and all testers should consider learning them.
I dont see a debate here (Which I was expecting) ...
Any one out there still disagreeing to what I and Debu are saying? Anyout there who will refue to hire a tester without programming knowledge?
Any tester out there who thinks learning programming is going affect their testing?
Taking microsoft as example .. one group I used to work for made it compulsory for testers to be have excellent SQL skills. Was it a good practice ... yes or no
Yes, lots of testers learnt SQL because of that entry criteria.
Bad, No one questioned (including me) why SQL skills are mandatory? I did not sense any real need for having SQL knowledge. Best testers in that group were best testers not because of SQL knowledge but because of their observation and bug hunting capabilities.
So learning programming can help but not having them is not a handicap as long as you demostrate your human testing capabilities..
Shrini
Hi All
ReplyDeleteI'm quite new at testing.
Only few months ago, I was network admin with some basic skill in PL/SQL.
After I changed job, I do blackbox testing .NET and JAVA apps.
Shrini said well..
I also agree that programming skills are useful but not mandatory for a tester. But I Learn lot to understand some problems that programers have, and to do some automation/ whitebox tests in future.
And to Debasis: thanks for this blog.
Chris
@ MrFreb (Chris),
ReplyDeleteThanks for sharing your experience and thanks for visiting this blog. Keep coming back in future, if you liked what you read here!
[Note: I followed your profile to your blog. Looks like it is quite new. I look forward to read some interesting posts in your blog soon. Hope you write in English! :)]
Happy Testing...
-Debasis
This is off topic - but I wanted to tell you how much I enjoy this blog. Really good stuff for software testers. Also, glad to see your new header graphic - looks good here :-)
ReplyDelete@ Andy,
ReplyDeleteThanks for visiting. And thanks a ton for allowing me to use your blog header image on "Software Testing Zone". :) I look forward to see more of your comments in future. Keep coming back and try to participate in the ongoing discussion. Thanks.
Happy Testing...
-Debasis
Debasis,
ReplyDeleteGood blog, enjoyed reading it. But i had a question, seeking your opinion on it
But now-a-days, the hiring methodology has been changed. They are looking for the programmers for testing (not only in my organization, i enquired many of them regarding this) We hope that this tradition should change.- NSMV
Now a days companies prefer hiring testers having some kind of programmimng knowledge.Also it is trend to shift the nonperforming programmers to testing team since people consider testing as a simple job - abhi
The state we are in Well, have we (black box testers) contributed to this..or is this just a new trend in industry :-)and so something else will come if we continue the same way
@ Sharath,
ReplyDeleteYou asked: The state we are in Well, have we (black box testers) contributed to this..or is this just a new trend in industry :-)and so something else will come if we continue the same way?
Honestly, I am not sure what you wanted to ask above.
Moreover, when you use "black box testers", I am curious to hear what you actually mean by the phrase.
"Something else will come if we continue the same way" - What did you mean by "something else"? Continue the "same way"! Which way?
I am expecting your clarifications of my above doubts, so that I can be in a better position to offer any opinion. Hope you understand.
Happy Testing...
-Debasis
Debasis,
ReplyDeleteWhat i meant was, haven't we as testers contibuted to the day we are in today. Wherein we still are asked questions like..
- what do u do in testing
- isn't it a click click job
- all u have to do is testing, but we need to develop
- use autiomation, how hard is it to record and playback
I used the term black box testers because, most of these questions are projected towards us.
"Something else will come if we continue the same way" - What did you mean by "something else"? Continue the "same way"! Which way?
I meant the hiring criteria atleast in India, please pardon me iam not aware of hiring criteria elsewhere.
Initially hiring criteria was Black box teters, techniques and so on, then came Winrunner/Loadrunner, the next was QTP, followed by python/perl other scriptiong lanaguages recently C, and in some cases even JAVA and .Net
Hope this clears thanks for replying :-)
@ Sharath,
ReplyDeleteThanks for commenting back with clarifications. You have made a very interesting point here, i.e. whether a tester is responsible for the day we are in today. Talking about Indian testers, I believe Indian Testing Industry is still in it's infancy. I feel that lack of seriousness and passion about the craft (testing) and lack of enthusiasm to learn has got roots in such kind of sluggish maturity level of Indian Testing Industry. When I say so, I am aware of some highly passionate testers and test managers who love their profession as much I love it. But as a whole, how many testers do you see everyday who are really honest about their job and love testing?
I realize that I can not change the hiring criteria of certain IT companies while they hire testers. But, I think educating (your manager, your client, other testers and most importantly yourself) is probably the key here. Unless we (Indian Testers) get serious about our craft and until we become passionate about what we do, people will be raising questions, and we will be too shy (rather scared) to face their questions. So start educating fellow testers and try to bring some respect in their heart for their job, so that our next generations of testers would not have to face such challenges, which we are facing today!
Coming back to the need to learn new technologies, scripting languages, testing tools etc, again, it all depends on your particular context and your testing mission! As I always believe, none of these are mutually exclusive, rather they should compliment each other! Use of tools, knowledge of programming logic and test automation can help a tester in finding bugs. But, can they catch bugs themselves? How can we forget the HUMAN factor of testing? I am reciting an interesting example Shrini gave once. "I give you a gun and you use the gun to kill somebody! Would you defend yourself saying that, the gun killed the person?"
My 2 cents. But I look forward to see other's comment and opinion on this subject.
Happy Testing...
-Debasis
Thanks for replying debasis
ReplyDeleteVery well put across,
I believe it's our (tester's) responsibility to build a reputation for ourselves, and we can achieve that only by getting better at testing.
Very good blog and i am sure that soon you will be seen in good search results and so good traffic.
ReplyDeleteThe style of writing in general is wonderful and i wish wonderful long journey ahead.
ALL THE BEST.
Excellent post Debasis. Thanks for writing on this critical topic. Looking forward to see more such articles in future.
ReplyDeleteJohn
1 big question .... do programmer also had main job function to become tester? if you guys answering it does then why? give me some information about that... my company said that programmer also tester... does it even right? developer is also still developing programme that's why i dont think that programmer shouldnt become tester...coz they still got things to do...
ReplyDeleteHello people, you are doing a great job by posting your suggestions/advices. It is informative and useful. I completed MCA and have worked in a BPO and now that I want to change to IT, I want your suggestion about building my career in Software Testing (considering my limited programming skills). I have got mixed responses from friends who are into IT. I think I could get a better advice as I see most of you are already into Software Testing......I am in desperate need of your advice....Plz, its urgent!!
ReplyDelete@ Ajay,
ReplyDeleteRegarding joining S/W Testing, while it should be your own decision, I am finding it hard to stop myself from asking you these:
- "What is the future of IT?"
- "What is the future of Programming?"
- "Will there be a day when the management can become confident enough to do away with the testers?"
- "Do you know someone who can predict the future in a reliable way? If yes, I would be grateful to get his/her contact info. If not, why do you worry about the future?" [If I were you, I would work on shaping my present by honing my professional skills, instead of worrying about the future that is unpredictable!]
Hope your answers to the above should answer your question about the future of testing.
And as far as lay offs are concerned (both during recession and otherwise), in my knowledge, they happen to them who are mediocre at best, as far as their technical skills are concerned. You may want to note that for a tester, technical skill is NOT equal to programming knowledge. While knowledge of programming can be helpful in certain contexts, they are not all for you to become a good tester. If that was not, then the programmers would be testing their own code and hence there wouldn't be any need for testers ;)
Hi Debasis,
ReplyDeleteThats a great thinking and me too have been arguing this with many of my other tester friends. However, for the first time I have found someone with the same ideas putting forth them in the exaxt words. I lead a 10 test member team and I would also like them to be familiar with programming languages. (Not expert, just familiar)? What programming languages would you suggest I tell them to get familiar with properly (I mean a level above familiarity)?
Best Regards,
Bodhi
@ Padmabodhi,
ReplyDeleteWell, I'm glad to hear that you found my words interesting.
But, unfortunately I do not have any particular answer for your question! First of all, I would never "force" my team members to learn something that "they are probably not interested in" learning.
We must realize that we can not make someone learn something unless they are interested on their own. As the test lead/manager what we can do is to try and "create that interest"! I'd like to leave the "how" part up to you. :)
Secondly, it's usually not the question "which" programming language - rather, its "why". As always, it all depends on your context - e.g. if your application is built using Java, then learning JUnit and some basic Java debugging skills might help.
And knowing some scripting wouldn't hurt either! For example, recently I was testing an infrastructure monitoring suite of tools when I was required to test a feature that is supposed to monitor Windows Event Logs. If I had relied on "pure manual testing" then it might have taken me hours to get to a situation when there was an error/info/warning event in the event log. To make things faster and more controllable, I wrote a very small VB script (8 lines of code) using which I could create/generate events at my will. It's worth mentioning that the application that I was using is built using Java technology and has nothing to do with VB Script!
Hope this little example can help you with your dilemma. Happy testing :)
i know i’m a little off topic, but i just wanted to say i love the layout of your blog. i’m new to the blogegine platform, so any suggestions on getting my blog looking nice would be appreciated.
ReplyDeleteTesting is a easy one but different thinking way should one tester have. Need to know more functionality from social sites like fb, orkut, twitter. We should give more ideas about project. We need to know some code flow. No need to know well about programming, just flow is enough. That will make a perfect tester in software world. :)
ReplyDeleteyou have good points here! I agree it's best to combine testers with strong and weak technical skills. it's more likely that they will have a complimentary approach and notice more things than two persons with the same skill-level
ReplyDelete