There’s no question that developers are a hot commodity in the tech world: Developer jobs are typically some of the hardest to fill, and the demand for these types of professionals doesn’t seem to be slowing down.

For those interested in the field, it may be difficult to determine where to start in terms of learning a programming language. According to new data from Indeed, Java is by far the most in demand programming language in terms of job openings, with close to 3,000 postings per 1 million jobs. It’s trailed by C##, with about 600 postings, and C++, Python, and JavaScript, all with about 400 postings per million jobs.

Ruby comes in seventh on the list, but has experienced massive growth: Ruby developers experienced a staggering 656% jump in searches by job seekers on Indeed between 2015 and 2016–among the fastest growing searches on the site, according to a recent report.

SEE: The 10 hottest developer jobs of 2017

“There is a huge shortage in supply of tech talent for development,” said Raj Mukherjee, senior vice president of product at Indeed. However, he cautions against pursuing the career for the wrong reasons. “Don’t become a developer because it’s a hot demand job–if you’re not excited about it, you will not be successful,” Mukherjee said. “You have to truly be passionate and understand why you want to do this job, and then learn the languages you might find important.”

Want to break into a career as a developer? Here are three languages to consider, and tips for how to go about learning them.

1. Python

If you aren’t yet sure what kind of developer you’d like to be, a good starting language with a lot of applicability is Python, according to IEEE senior member Karen Lawson.

“Python is a highly accessible, widely used language that has an expansive development community,” Lawson said. “It is used in various ways from data science, devOps scripting, and in 3D rendering pipelines and various other industrial and academic purposes.”

Python is also a great way of learning to work with more complex environments such as JavaScript (for client-side programming) and Java or Scala (for enterprise computing), according to George K. Thiruvathukal, IEEE member and professor of computer science at Loyola University Chicago.

One downside to Python is that it is an interpreted language, not compiled, so it can suffer from performance issues if it is not optimized or written with an understanding of how interpreted code will execute on the target platform, Lawson said.

2. Java

To determine what language to learn, it’s important to consider what you’d like to build, said Michael Facemire, a vice president and principal analyst at Forrester. Developer work breaks down into two categories: Making things you can see and touch, such as web pages, mobile apps, and desktop apps; and working with data integrations and server side programming.

If you are interested in the latter, Java is the de facto server side language, Facemire said. A positive element of Java is that it is a compiled language, Facemire said. That means it can check if you passed the right amount of arguments in your function, or if you tried to infer value from a variable you shouldn’t infer, so you can tell what you need to change early on.

And, as the Indeed research mentioned above makes clear, there are a massive number of current job openings for Java programmers.

3. JavaScript

For those interested in web, mobile, and desktop development, JavaScript is the most in-demand programming language, Facemire said. “If you approach this from ‘I need to acquire a skill to get a job,’ be a JavaScript developer, pure and simple,” Facemire said.

JavaScript will likely continue to become more important, Facemire predicts. “You’d be hard pressed to find a company not using JavaScript for something,” he said. “Especially looking at all of the major companies handling massive amounts of data in a digital fashion–like Netflix, PayPal, and Walmart–they are pushing tremendous amounts over the web with JavaScript.” A growing percentage of back end programming is now also written in JavaScript as well, thanks to Node.js, Facemire said.

Like Python, a downside to JavaScript is that it is an interpreted, rather than a compiled, language, Facemire said. That means that you write the code, JavaScript interpreters run it, and you only find out if you wrote bad code at run time–later than you’d ideally like to know, he added.

SEE: Download: The truth about MooCs and bootcamps–Their biggest benefit isn’t creating more coders (TechRepublic)

Tips for learning to program

Lawson recommends a three-pronged approach to learning a programming language:

1. Individual training, via online courses, classroom courses, or books

“This will provide you with the basic syntax, operation, environment setup and other critical getting started details,” Lawson said.

2. A project that motivates you

“This is something that you want to do that may be beyond your skill set but that will motivate you to keep driving yourself to achieve,” Lawson said. For example, you might try to write a small Python app to tell you if the light in your refrigerator turns off when you close the door.

“This project will force you to learn all the language primitives, understand size and execution flow and when you are done you will have impressive skills,” she added. “While the class can give you the ‘Hello, World’ practice, the project introduces you to the best part of programming–creativity in solving a problem you care about. This will carry you through some of the slower moments of learning a language.”

3. Developer communities

Seek out blogs, forums and online interaction to see how others have learned. “Knowing the communities and places to go to see how others have solved problems, learned techniques, and discussed new distributions and releases is critical to truly learning and understanding real world development in a language,” Lawson said.

Lawson also recommends new developers maintain a portfolio of code, manage it, and continue adding reusable elements, no matter how small. “You can look back and see clearly how far you have come with techniques, knowledge, and sophistication,” she said.

It can be helpful to have experienced developers review your code, as well. “It’s worth it and it can shortcut learning to have skilled individuals discuss how they would approach solving specific problems in code,” Lawson said.

Update: A video was added to this article on April 11, 2017.