Whether you’re looking to refresh your skills or learn something new, it’s a good idea to check what’s current. The TIOBE Index updates every month, using data from engineers, courses and vendors to work out the most popular and in-demand programming languages. We’ve used this list to put together a rundown of the programming languages you should learn, or at least be aware of, if you’re planning to do anything involving software development.

TIOBE do warn that these are just popular languages, though: if you’re looking for the best programming language, these aren’t necessarily what you need. You need to think about what you want to do with the language you learn, and what fits best with the way you think and work!

Java

Good for: Mobile and web apps.

Java is the big one, the one that pretty much everyone is aware of. It’s not the same as Javascript, which is a less popular language run in browsers only. Java creates applications that can run in virtual machines or browsers, and the two languages use different plug-ins.

If you’re looking to learn a new language, it’s safe to say that Java is important. If you don’t have any Java skills, you might want to acquire them fast.

C

Good for: Cross-platform compatibility

C is the second most popular programming language according to TIOBE, and it’s with us for the long haul. It’s commonly used in developing firmware and portable apps, and was originally developed for Unix. It’s been around for a while, developed back in the 1970s, but it shows no sign at all of dying out.

There are tons of tutorials available online for C, some of them designed for people who haven’t programmed using any language before. It might be a good place to start if you’re new to programming, and it’s a skill you’ll need for the foreseeable future.

C++

Good for: General purpose programming

C++ is a bit more modern than C, and though it’s not quite as popular, it’s still a staple of coders everywhere. It’s a bit more versatile than C in that it is a ‘hybrid’ language; it combines two different types of programming languages, while retaining a lot of the functionality of C. Careful, though: they’re not completely compatible.

Python

Good for: A first programming language

Python is a solid favorite of some programmers, and unlike Java, C and C++, its popularity isn’t really declining over time. It’s a streamlined system, allowing programmers to express what they need in fewer lines of code than is possible with C++ or Java – and it’s designed to emphasize readability of the code, too.

It’s easy to learn, with a learning curve that doesn’t climb too fast. Some people say it’s the ideal first programming language.

C#

Good for: Windows programs

Developed by Microsoft within the .NET initiative, C# is designed to be simple, modern and general purpose. It’s intended to be robust and durable, and some say it’s a lot like Java – maybe too much like Java. Regardless, it’s a popular language and has an active development team. It’s safe to say that C# is a useful skill.

Visual Basic .NET

Good for: Simple user interfaces

This is the first language on the list which TIOBE rates as increasing in popularity. If you’re looking to get a new skill which will further your career, Visual Basic is definitely a wise choice. It’s described as a fast and easy way to create .NET-based applications, and users are confident that it can be used to program just about anything you need.

JavaScript

Good for: Web design

If you’re looking to create things that run within a browser, JavaScript is one of the most popular options. Its popularity is pretty stable, and it’s one of the languages that almost anyone working in tech knows about. It’s a small and lightweight language, according to those who know, meaning that it should be economical to learn.

Assembly Language

Good for: Speed in programming

All the other languages on this list are high-level languages, but assembly language can do things not possible in such high-level languages. It’s seen a bit of a surge in popularity recently, probably because programmers can use it when speed is essential, as well as when higher level languages won’t do the job. Warning, though: assembly language is specific to the type of CPU involved.

PHP

Good for: Server and Wordpress interfacing

PHP might be declining in popularity somewhat now, but it’s still a key language in website design, particularly for creating interactive webpages. It’s primarily designed for web development, but some people use it as a general-purpose language as well. “PHP” stands for “Hypertext Preprocessor”, and it’s essential for software like Wordpress. This is a skill you probably shouldn’t miss out on.

Perl

Good for: Security

Perl is a script programming language like Javascript, while being similar in syntax to C. It’s actually a family of languages with some differences between them, but in theory it’s easy to learn to use the different Perl languages based on prior experience with Perl. Perl 5 has been called the “the Swiss Army chainsaw of scripting languages” – it’s powerful, flexible, and you want to have it in your pocket for just about any eventuality.

Ruby

Good for: Ease of learning and readable code

Ruby is past its peak popularity, but a lot of programmers still swear by it. It’s been described as simple, elegant, practical and general purpose – it’s easy to read and thus easy to learn, which is good news if you find looking at a page of code a bit like interpreting Egyptian hieroglyphs. Even though it’s not in the top ten right now, it’s still a versatile language that would be a great addition to your toolkit.

It’s a good idea to be versatile and to be at least familiar with all the popular programming languages. The languages you know will limit your options in what to work on – or open up the horizon for you. A good course in a couple of the most popular ones will set you up for work in tech. The more programming languages you’re familiar with, the easier it is to acquire new ones, because of the similarities between some languages, and the way that they build on the successes and failures of languages that came before.