I learn different languages to different levels depending on reason:
- If I hear an industry guru or colleague rave about a language, or read in a magazine that a new one will supposedly take over, cause world peace etc. I might briefly take a look. Derek Banas 1h youtube video introductions to languages are often perfect for this
- If I have to start work on a project with a new language, I might
- try to read, copy & expand any existing code
- read books and run coding challenges/katas to get upto speed on it to a somewhat more professional level quickly
I don’t really understand the question on Java though I’m afraid. If you’re referring to the best programming language for testing, I would say it depends on:
- the problem at hand (are we testing hardware devices or desktop software),
- what existing code support might be in place (APIs from SUT vendors, libraries already online etc.),
- frameworks & tools already in use (i.e. Robot Framework or Ranorex)
- knowledge & experience of testing team members or language wishes of the whole company
There is no one-language-to-rule-them-all… for testing or any other problem. Java could be useful, other languages could be useful - it’s always context-dependent.
Totally agree with what @alex_read said above. There is no universal language that could be used for everything and the skill comes in choosing the right language/tool to fit your needs. :)
As for learning new tech stuff, I am not a fan of the concept of learning just for the sake of learning. I believe it is important to start delving into the new topic with the vision of what you want to accomplish with your newly gained skills. This is why I am usually learning just to help me get my task done. Some people might argue that it is better to specialize in one topic only and dive really deep, but I prefer to be “jack of all trades, master of some”.
There are of course languages that might be used more than once. For me it is Python that became like my bread and butter. I first started using it for automation and scripting, after that I had to process some of the data and generate some visual reports so I got a bit into data science, after that I wanted to create a simple game to amuse this one young lady I liked back then, after that I delved a bit into computer vision as I was trying to automate the image processing at the company I worked for back then and now I am using it for cybersecurity proof-of-concepts. With all these use cases, I have sticked to one language (different frameworks/packages) and that was Python. I could have used PowerShell/Bash, R/PowerBI, Unreal (C++)/Unity (C#), C++/MATLAB for OpenCV etc., but I have decided to stick with Python and just delved deeper into it. :)
I believe that in the end it is every person’s choice, but for me, if I see that I can use one language for more use cases, it is a sign for me that I should learn the it properly.
@alex_read and @hungoboss - The question was more in the direction do you consider that the same programming language can be learned/used differently for testing and development?
I asked about Java because it came first into my mind but it can be any other language.
To give more context. If you go to a guru and tell them you are a tester and want to learn Java will they say I have this book Java for testers that contains Java methods especially for testers or will they say that you need to start with books like Thinking in Java
It likely will be learnt the same (as above, by self-study, using it in practice or mentoring etc.) & the basics will be the same: conditionals, loops, syntax etc. are all no different.
I would imagine specialisation, like design patterns for testing, in most if not all cases, comes later after the basics are learnt.
A guru’s answer I should think should be in the form of more questions first - do you specialise in, or have any experience in, programming-based testing. What programming languages might you know already and to what level… again everyone is different & there’s no such thing as “just a tester”. A performance tester might have been working in the C language for 10 years and might fancy a change to Java for a specific task etc.
When I stared with automation I knew very little about JS (using Cypress with JS) so I first sent down and learned it to the point I could understand it and use it to write scripts. Now, as I’m actively using Cypress on, almost, daily basis I started learning both JS and Cypress snippets that I need while, at the same time, I switched to actively learning Python.
I’ll probably get to learning Java too at some point, just because I love learning - it’s fun :)