What Programming Languages Do Software Engineers Use?
Welcome to my fourth of a series of posts where I try to bring you up to speed on the knowledge, skills, and attributes required to be a modern software engineer. If you haven’t yet, be sure to read the posts in the series leading up to this one, starting with what a software engineer actually does. In this post, we’ll be exploring the different programming languages used by software engineers, what they’re used for, and where to start if you want to learn.
Before we discuss any details of the various programming languages, let’s focus on what a programming language is. At its core, the purpose of a programming language is to allow humans to provide instructions to a machine in order to receive input, process data, and provide an output (or at least some subset of the three). There are many ways to categorise programming languages and describing these categories is a bit complex so we won’t get into that at the moment. Something which is more important to us right now is the wide variety of programming languages and their uses. In this article, we will be looking at six of the most popular languages used by software engineers (in alphabetical order). Each of these languages could easily merit a series of articles on its own so we’ll only cover the most important aspects from the perspective of becoming a software engineer.
The first language we’ll look at is C++ (and its predecessor C) which is one of the older languages on this list. C++ tries to give the benefits of C with full control over underlying hardware while also providing the ability to use an object-oriented approach to solutions. C++ is most used in systems where performance is of utmost importance (game engine development, for example) or where resources are minimal (including microprocessors for Internet of Things solutions).
C# is a major overhaul of C++, created by Microsoft. It abstracts much of the complex low-level detail away from the programmer and provides access to many modern features such as asynchronous operations. The biggest use-case for C# in the modern world is enterprise-level server solutions which process data from front-end applications (think of the server-side of large online platforms).
Go (or Golang as it is often referred to) is a language created by Google and is one of the newest languages on this list. Go is a modern language which provides the performance benefits of low-level languages whilst maintaining a good level of simplicity and readability. It’s mainly used for large-scale solutions which can leverage the performance and concurrency benefits it has to offer (this includes Google’s own infrastructure which must reliably service enormous numbers of clients concurrently).
The next language we’ll look at is Java. Java is a platform-independent language (meaning it can run on just about any operating system) and is characterised by its rich features and backwards compatibility. It is a relatively simple language to learn and write, however, as with any language, it has its idiosyncrasies. Java is best known for its use on the back end of enterprise solutions and also for its use in developing native Android applications.
JavaScript is a language of the Web. Once a simple tool for client-side scripting, JavaScript has evolved into a powerful, feature-rich language that can run on any browser and even on servers. JavaScript has many oddities but is generally easy enough to learn. Almost all of the Web’s most popular frameworks (Angular, React, Vue and Node) run on JavaScript (or some variant of it such as TypeScript). This makes JavaScript a must-know language for any software engineer who works on web applications where it is used for view manipulation (in the browser), communication with a server, and even to process data on the server itself.
Finally, we’ll look at Python which is a versatile language that can do it all. Python is extremely easy to learn due to its simple syntax and active community, however, it lacks the raw performance benefits of some of the lower-level languages. Python’s main uses lie in the realm of data science and machine learning where its mathematical and data-handling capabilities shine (especially through the use of third-party libraries).
So now, let’s look at the important question. Which of these languages should you learn first, and why? Unfortunately, the answer generally tends to be an ‘it depends’. That being said, there are a few helpful guidelines to consider. If you’re trying to solve a specific problem then look through the list and pick the language that is best suited to the problem domain. If, on the other hand, you’re just looking to learn how to code then this next part is for you. Many people recommend starting with Python but I don’t personally agree. Python is a very high-level language which means you don’t get an understanding of what is going on under the hood. On the converse, starting with C (or even C++) is probably not the best idea either since you’re required to do a lot of low-level work (like memory management) yourself. That means my recommendation is to start somewhere in the middle — a language that is low-level enough to teach you the basic principles but high-level enough not to be painfully difficult to learn. Two languages from the list above which fit nicely into this middle-ground are Java and C#.
In the end, it doesn’t really matter where you start your education in programming languages. Experience in one language generally translates well to others, especially when the languages in question are in the same category. Even if the syntax is vastly different, learning to solve problems through code is one of the most important aspects of being a software engineer. Any experience in this will lay a solid foundation for the rest of your career. Programming languages are the main tools of software engineers. I hope you have a better understanding of the most-used languages and a clearer idea of where to start coding on your journey to becoming a software engineer.