This article will give you an overview of a few key factors you should consider when choosing your first programming language. The content written here assumes you already got a basic understanding of what programming languages are and how they work. If you have not already, take a look at my other post about What is programming? What are programming languages?.
A software engineer is equipped with the ability to create software. Software is everywhere, but not every software is created the same way. Regardless of it being an app on your smartphone, a website or a standalone desktop application - they all are built using one or more programming languages. Therefore, if you want to learn how to program, you will have to learn a programming language - this is the first step. Of course, you are highly encouraged to learn more languages to further increase your skill-set, but everyone must start somewhere, right?
Note: Programming languages are not the only languages a software engineer should be able to speak, there area also markup languages and query languages. Depending on what your goal is, you might be required to learn multiple languages at the same time, which might not be ideal in the beginning. Be patient and start with just one language.
It can be daunting to see how many different programming languages there are, and then deciding for one can be even more difficult. Also, besides the languages themselves there are often frameworks, libraries and other tools involved. Getting an understanding of what belongs and works together can be a challenge as well. To help you with that I put together a list of different languages and the areas in which I think they are most commonly used in. Do not worry about frameworks and libraries for the moment, once you start programming you will soon enough get in touch with them.
Note: This list is non-conclusive and only consists of a few common languages. There are many more languages besides the ones listed here, and the ones listed can surely be used for other purposes than the category I put them in. Also, you do not have to memorize this list, I will give you my personal advice to which languages you should consider learning first later in this post. This list is mainly to give you a brief idea of what exists, knowing this you can always come back later and take a more in-depth look.
- Mobile apps
- Desktop applications
* → languages that I would not consider to be programming languages, but are essential in the category they are in
As you might have noticed, some languages are listed multiple times. The reason for this is because these languages can be used in a wide variety of applications and therefore are used more commonly throughout the industry. If you are looking for a more expressive overview of the most favorite languages used by developers, you can take a look at the StackOverflow Developer Survey 2018.
Note: Even though a language might be very popular, it is not necessarily the best idea to learn it as a first language, since the language may be very unintuitive and hard to understand as a newcomer.
Choosing a language
Regardless of which category you plan to set your focus on, I think it is essential to first learn the basic mindset of a programmer. Breaking down problems, defining solutions in an abstract manner and finding patterns in mayhem are skills that you will learn on your way to becoming a software engineer.
Note: Acquiring the mindset of a software developer might take some time, so be patient and keep learning!
Programming languages are classified into strong and weakly typed languages. Without going into too much details here; I highly advice you to learn a strong typed language, this will make it easier for you to understand the general rules that apply in programming. I personally started of by learning C which thought me the very basics of programming. But C has gotten into its years, by the time of writing this article it has been around for nearly 50 years! Although steadily maintained and worked on, I think it is more appropriate to start your career by learning a younger, more high-level language like C# or Java.
The benefit of learning one of the latter is that you will get familiar with OOP (Object-oriented programming), one of the more essential concepts in programming. Besides that, you will of course learn the basics of programming like data types, variables, control statements, classes and methods. Maybe even more important is that, by learning the concepts mentioned you will get a solid understanding of core principals which are used by many more languages, not just the one you are learning. Understanding data types in C# for example, will make it a lot easier to learn any other language that works with data types. Although there might syntactical differences, the idea is the same.
As a software engineer you have to know programming languages to create software. Different languages are used for different purposes. For starting of, I would suggest you start by learning either C# or Java, since both of them are very versatile, give you a solid foundation for learning more languages in the future and can be used in nearly any environment.
Made your decision yet what you want to learn? Read more about How to learn a new programming language.
I hope you found this article helpful. Share your feedback and experience in the comments and subscribe for more content on fooo.ooo.