Which programming language should I learn if I want a good job in coding?

Expert advice on what skills businesses are looking for

"I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it," Bill Gates is reported to have said.

Of course, spending many hours on a couch in front of a TV would not be enough to turn Bill's head. Paradoxically his ideal candidate would be possessed of endless energy, with a burning desire to find shortcuts and workarounds combined with the skill, stamina and diligence to see the quest for a life of ease through to the end.

Gates's point was that the best engineers are those whose driving urge is to simplify through technology. This is the goal of machine learning for example. Why look for patterns in data yourself when you can train a machine to do it, and do it much better?

"It's a lot about being intelligently lazy - automating everything a computer can do for you," said Katrina McIvor (pictured), principal technologist for DevOps at QA, adding that machine learning and AI are some of the biggest technology growth areas at present.

"They are getting a lot of traction under the heading of data science. It all used to be called data mining, so it's not new, the tools are just better these days and the people in companies are more willing to talk about it."

The goal is to make data science simple not necessarily so that anyone could do it using a dashboard, but so new layers can be built on top of a stable platform.

"The Microsoft Machine Learning stuff will let you train a model and predict outcomes via a web service without you needing to write a line of code," said McIvor. "Of course, knowing how to wire things up together is another thing."

Those looking for a job in tech are generally in the business of wiring things up, and there are a few key languages in the data science area, such as Scala, Python and R.

Scala was also mentioned by Ritika Trikha, a researcher at HackerRank, a platform that allows coders to practise their craft and employers to recruit the most promising developers.

"Among the newer languages we're seeing are Swift, Go and Scala," she said. "There's a lot of interest in those right now."

Apache Spark is written in Scala, which makes it popular with data scientists. It is based on the Java Virtual Machine [JVM] and is very compact once you've learned the ropes.

"The bit I particularly like is that a single line of code is an entire class, complete with constructor, getter, setter, toString, hashcodes the works," said McIvor.

"Writing all that [Java] boilerplate was boring, so why not let the compiler do it for you? It's being intelligently lazy again."

That said, learning Scala might be a bit of a leap for many. With its simple syntax, Python may be a better starting off point. Despite being a relatively old language it is still very relevant today.

"Python is amazingly versatile, it's used for coding, infrastructure stuff, general helper scripts and a lot in the AI / data science area as well these days," explained McIvor.

Which programming language should I learn if I want a good job in coding?

Expert advice on what skills businesses are looking for

No one ever got fired for buying IBM, as the saying goes, and by the same token no one will go far wrong learning Python or one of the other ‘big four'.

"There are so many new programming languages coming out but the most in demand are still Java, Python, C and C++. These four fundamental pillars are what make up the majority of businesses' code," said Trikha (pictured).

But what of JavaScript, the language that StackOverflow currently rates the most popular? Could this be because StackOverflow's readers are disproportionately focused on certain areas?

"Yes, we see JavaScript. It's probably number five in some industries like mobile and gaming, but only number seven or so in security, healthcare or finance," said Trikha.

Rust is an up and coming language that some believe may one day displace C++ in many areas where it dominates currently, but so far it hasn't made much of a dent in industry, Trinkha said.

"I looked into Rust, but a lot of companies are invested in legacy systems and it's incredibly difficult to move all that."

HackerRank has also broken down programming languages by industry.

"So in social media is Java and Python, in healthcare it's C# and Java and in security it's C and C++ that are in demand," Trikha said, adding that there are also differences between large and small companies.

"Larger companies look to problem-solving skills not so much the language skills whereas smaller companies need people ready to code on day one."

Other than the example of a small company desperately trying to find a Lua expert, though, it's more about aptitude than language.

"When you know how to program, the language is almost irrelevant," McIvor said. "It's like driving in a way; a Mercedes will handle differently to a banged up old Ford, but the basics are the same and someone who can use one can use the other."

As an experienced programmer your employer should be able to help you get up to speed on the bits of a language you need to know she added.

Recent experience is certainly important. HackerRank's research has found that developers with two or more years' experience who put in about 20 hours of practice had a 50 per cent higher chance of being invited to a job interview following a skills assessments than senior engineers with no practice, while self-taught coders with 50 hours recent practice were on a par with developers with more than two years experience.

Aside from practising on online coding sites like HackerRank, developers should get involved in some open source projects, advised McIvor.

"Experience is something hard to quantify. You have to be a confident programmer, even just knowing what type of thing you are looking for and where to find it is half the battle. There are a load of projects that you can try implementing in different languages to give you experience as well. I don't think there is a minimum amount of experience or a maximum, it's confidence and logic," she said.

"Can you read a problem, work out - usually as a picture - the steps for how to get from A to B, and then can you do it in a reasonable way in your language of choosing? Knowing about things like source control and test driven development is a must these days - all things that you will get some practice with if you get involved with the open source projects."

Once you get to the interview or coding test, you need to display that confidence too.

"Communicate your thought processes as much as possible," said former software engineer at Google, Microsoft and Apple and tech hiring consultant Gayle Laakman McDowell, author of the book Cracking the Coding Interview.

"That's something you can definitely prepare for. Get comfortable talking out loud and exposing your thought processes. Whenever you notice yourself being quiet, take a step back and at least give me a headline of your thought processes."