Common Questions

What Languages Should Every Programmer Know?

It’s easy to get lost in the sea of programming languages. On top of that, there are some languages (I’m looking at you, JavaScript) that have a vast ecosystem of frameworks. Wikipedia has an exhaustive list of programming languages with several for each letter of the alphabet. I won’t count them, but there are at least 260 at a glance. There’s no way you can learn all of them. So, what languages should every programmer know?

Where to Start?

If you want to know where to start, you can take a few approaches. Of course, this depends on what you want to do in your programming career.

What languages should every programmer know?
Credit: Pixabay.com

If you want to build games, you should learn some common gaming languages (and platforms, too). For mobile app development, you would focus more on the languages used for iOS and Android development. Is data analytics your thing? It’s pretty hot right now! And if it is, you’ll want to learn data-centric languages, plus some languages that specialize in data analysis like R.

See what I mean when I say it depends on what you want to do? But if you don’t quite know where to begin, you might look at the markets. Are you interested in learning to code because it has a good job market? If that’s your game, then you might consider using the markets as your guide.

Two points to consider:

  1. The markets are always changing.
  2. Some languages are in demand because knowledge of those languages is uncommon.

Also, you can ask around. Of course, if you ask five different people, you’ll get five different answers. But, you can always take the ones that are mentioned more frequently and start there. I’ll share my own list and see what others have to say on the topic, too!

Mobile App Programming

There’s no doubt about it: Mobile apps are hot! If you want to program your own mobile app, you can! There are a few moving pieces involved; plus, you’ll have to account for which platforms you want to work on. In this section, we’ll look at which languages target which platforms.

iOS

For modern iOS development (this includes iPhone, iPad, wearables, and auto), you’ll want to learn Swift. Swift is the official programming language for modern Apple development. It’s fairly new and works on its own or side-by-side with the older Objective-C language.

You might want to learn a bit of Objective-C, too. Here’s why: If you start doing iOS development, you may eventually come across some older application code. Unless you learn a bit of Objective-C, you might have no idea where to begin. Since Objective-C is a language that extends C, you can also pick up a bit of C along the way. This isn’t necessarily the best place to get started quickly, but if you’re up to the challenge, give it a shot!

Android

As you may already know, Java is everywhere! Despite the rise in popularity of many other languages, it's still a relevant language. I wouldn't recommend learning only Java at this point in time, but you can certainly start with Java.Much in the same way Apple programming has evolved over the years, the world of Android programming has a newer language called Kotlin. Kotlin isn’t strictly for building Android apps either, but it’s the modern way of making an Android app. It interfaces with Java, which is the core language for Android programming. You can build an Android app using both Kotlin and Java, so you should also learn a bit of Java.

As you may already know, Java is everywhere! Despite the rise in popularity of many other languages, it’s still a relevant language. I wouldn’t recommend learning only Java at this point in time, but you can certainly start with Java.

Cross-Platform

For quite a few years now, the idea of programming once and learning once (these are different concepts, but both are still useful) has been the holy grail of mobile app development. While there are several platforms you can do this on, such as React Native, Xamarin, and Ionic, they still don’t have full transportability if you have to do some custom hardware interaction. This isn’t a problem for a lot of cases, so it’s definitely worthwhile.

As for programming on these platforms, you have a few languages you can choose to learn. For React Native and Ionic, you’ll want to learn JavaScript. You should really consider learning JavaScript anyway since it’s used for web programming, database programming, and scripting—it’s a highly versatile language that can take you to a lot of places. Xamarin uses C#, which is a very useful language in other ways, too. And there’s a newer player on the scene, Flutter, which uses Google’s Dart language.

API and Database

Another factor to consider when it comes to mobile app development is data. Mobile apps usually interact with one or more back-end systems. These systems are used for logging in users, storing their data so they can access it across devices, and providing other data services to the applications. Plus, many mobile apps have their own databases on the device. The programming languages for APIs and databases are the same ones you’d use for web app programming. Let’s check those out next.

Web App Programming

There are multiple layers of a web app. There’s the front end, which is the user interface, or what you see in the browser. Then there’s the code that runs on servers that deliver the applications and data to the browser (a.k.a. client and user agent). Another layer is databases—this is where all the data is stored. Let’s look at some programming languages you might expect to use in each layer.

Front End (What You See)

The programming language for the web is JavaScript. There are several frameworks that use JavaScript to make it easier to build web apps, but they all rely on JavaScript. You should really consider learning JavaScript anyway since it's used for web programming, database programming, and scripting—it's a highly versatile language that can take you to a lot of places.That’s because browsers support JavaScript standards set by the World Wide Web Consortium (W3C). There are some other ways to program for the web, but they usually require plug-ins like Flash and Java and aren’t generally the way web programming is done these days.

Web application front-end programming has the following three parts:

  1. Structure, which is defined using HTML.
  2. Style, which is defined using CSS.
  3. Behavior, which is written in JavaScript.

All other aspects of web development are handled by interactions with a back end. The user interacts with the back end using URLs to fetch images, web pages, front-end code, media, and data used in the web app.

Back End/Database (What You Don’t See)

There is a variety of languages you can learn to do back-end programming. One of the most popular web programming languages had been PHP. These days, PHP isn’t that useful. It’s largely been superseded by JavaScript running on Node.js or back ends using the Python language. Other popular back-end languages include Java, C#, Go, Rust, and Ruby.

As for databases, there are really two major languages to learn these days: SQL and JavaScript. There have been databases built using nearly any language, but the tried and true language is SQL. There are several flavors of SQL, and many databases allow you to use C or other languages to extend functionality. You can go quite a long way with just learning SQL, but you should consider also learning JavaScript since it’s useful in other ways.

Admin, Infrastructure, Security, and DevOps

There are programming languages that are widely used in administrative tasks. Python, for example, is used for all kinds of tasks involved in the deployment of apps, managing servers, and running just about any script to automate IT tasks. Shell scripting is another common form of programming that requires nothing more than just the command prompt or shell on your current computer. Type the following in a command prompt or shell, and you’ve just written your first program:

echo "Hello, World!"

But there’s also Powershell if you’re interested in scripting in a Microsoft environment.

Everyone Should Learn Scripting

No matter what type of programming you’re interested in, it doesn’t hurt to learn shell scripting. No matter what type of programming you're interested in, it doesn't hurt to learn shell scripting. That's because you can automate so many tasks using a shell. It's also a quicker way to do many of the tasks you might open a file explorer to do. That’s because you can automate so many tasks using a shell. It’s also a much quicker way to do many of the tasks you might open a file explorer or finder window to do. For example, on Windows you just type “dir” in a cmd window to list all the files and folders in the current directory. On Mac or Linux, “ls” does this. Plus you can add filters to the output.

Many tools have different ways to interface with them, including graphical user interface (GUI) and a command-line interface (CLI). For example, programmers rely on a version control system (VCS) to keep track of changes to code. The most popular VCS is Git, which has a very powerful CLI. Programmers use CLI tools all the time, so it’s worthwhile to get comfortable using a command line.

Data Analysis/Data Science

There are a couple languages that I’m aware of that are specific to data analysis and data science. If you’re a spreadsheet user, you can step up your game using Visual Basic. With VBA, you can program macros that can react to changes to data in your spreadsheets. This is the most basic level of data analysis. It’s also a language you must know if you’re a programmer at a company that relies heavily on spreadsheets during the normal course of business. Knowing VBA will make you seem like a magical genius in the eyes of the business.

More advanced data analysis involves programming in the R language or using MatLab, which is popular in the scientific field. R allows you to crunch numbers and create visualizations of large amounts of data. This is not my area of expertise, but it certainly is intriguing!

Gaming

Gaming is a big draw for many people who are interested in programming. There are many outlets for game programmers, including mobile, platform, web, PC, and even special devices such as handhelds and electronic board games.

Mobile Games

Ps2
Image by WikimediaImages from Pixabay.

Mobile games run on the same platforms as mobile apps, but programming for them requires a different set of tools, languages, and skills. Metal is the modern graphics tool for games on Apple. You would want to learn C++ for Android game programming, and it probably wouldn’t hurt to learn Kotlin and Java as well.

Alternately, you can use the Unreal Engine to write your games in C# and deploy them to iOS and Apple.

Platform Games

If you’re interested in writing games for platforms, you might consider looking into a college degree. That’s because the field is pretty competitive, and with only a few companies producing games, there isn’t a whole lot of wiggle room. It’s a supply and demand problem, you see. That said, C++ would be a great language to learn if you want to get into this field someday.

Devices

When it comes to programming drivers for devices and even standalone devices, C++, Java, or C# should be your language of choice. All of these languages are used in device programming. Low-level coding is tough, and this is yet another area where you’d be unlikely to gain entry without a college degree in computer science or engineering. With that in mind, if you have your heart set on creating some cool device prototypes, you can still do that!

A great way to get started with device programming, no matter what level of skill you have, is to buy a Raspberry PI or an Arduino at a relatively low cost. These are low-cost computers that have input and output pins that can be hooked up to sensors, motors, and whatever your imagination can dream up. You can program them in Python, C#, Java, or several other languages depending on the device and platform you choose. It’s a great way to get creative and learn to program!

Key Takeaways

I recommend knowing Java/C++/C#, JavaScript, Python, and SQL. Start with any one and take it from there.Hopefully, by now you’ve realized that you’ll need to learn more than one language in order to really make an impact when it comes to programming. This is the beauty of the craft! You get to explore technology in many ways when you learn to program. There are a few languages that are used more widely than others, and these would make great starting points depending on your interests. I recommend knowing Java/C++/C#, JavaScript, Python, and SQL. Start with any one and take it from there. Eventually, you will start to see similar patterns in the languages. Once that happens, picking up new languages is a breeze!

Happy coding!

This post was written by Phil Vuollet. Phil leads software engineers on the path to high levels of productivity. He writes about topics relevant to technology and business, occasionally gives talks on the same topics, and is a family man who enjoys playing soccer and board games with his children.