You decided to be a software developer! This will be a significant step in your career and your personal growth. The problem is that you don’t know where to start from. Let me tell you some important things you should know. At the end of this post you will have the answer to the question “Which programming language should I learn first?”. We will cover the reasons behind that decision, and I am sure you will make a right choice.
If you Google for programming languages, you will find a ton of them. This is good because it means that there are multiple choices out there and you will find for sure a programming language that suits your style. But it is also overwhelming when you don’t know where to start. Let me help you with that.
Either you chose software development as a career path or as a hobby I can tell that it is an excellent choice. Software development is a very productive activity. Your life will change after learning how to create software that other people can use. You will solve problems and help people improve their life. In case you want to start your own startup company, software development can help you achieve your goals. For sure it is not an easy task. There are many different choices you have to make, and it is difficult to decide where to start from. Below you will find the five things you need to think when you are choosing which programming language to begin with. You will find everything you need to know, and I am sure you will take a great decision.
But before we start let’s see the five things you need to think before making your decision and one truth.
There is one truth about software development, and this is that it does not matter which will be your programming language of choice. The most important thing is to learn the principles behind software development and how to make properly structured software solutions. You need to learn the foundations of software development and how to think. After learning and mastering a programming language, you will realize that all the languages are based on the same concepts. There are some differences in syntax, but the core principles are the same. This means that it is essential to start with a language you feel comfortable and master it. After this, it will be easy to jump to a different language or technology. The learning curve will be much smaller. Trust me on that, I already know how to code in different programming languages and for me is easy to jump to new programming languages quickly.
Five things to think of
1. What is your intention?
The first thing you need to think is what is your intention. It is essential to know what do you want to create as a software developer. For example, the choices if you want to be a game developer differ from those you have if you will be a database developer or a web developer. Although, there is at least one programming language that will allow you to create games, desktop, and web application, but this is something we will discuss this later.
A small hint is that most of the people who want to learn how to code, want to create games. I have to tell you that even if this is much easier than how it was some years ago; it is not an easy path. To be a good game developer, you need to master algorithms and to be great with math. The programming language of choice for most game developers is C++, but for sure it is not a programming language for beginners. In my opinion, you have to start with another language. C# is a great choice, and you will be able to create games by using Unity engine.
If your intention is web, mobile or back-end development, then your choices are different. Check below my recommendations and you will find which programming language you can use per different intention.
2. What is your environment (Mac, Windows or Linux)?
Now that you know what you want to create, you have to think what is your environment of choice. By writing environment, I mean the operating system of choice and your computer. This is also an important step for some programming languages. The reason is that to create software you need to install tools to compile, debug and run the program. There are programming languages that the tooling is more difficult to install on windows than in Mac and the other way around.
Also, if you intend to create mobile applications for iOS, then you need an Apple computer. If you don’t own such a computer and you want to make mobile applications, then it is better to stick with Windows and Android development. The same applies to client development even if there is at least one language that allows you to create cross-platform applications. But below, we will see some of your possible choices.
3. Difficulty Level
The third thing you need to think is the difficulty of the programming language. You will think that you don’t know how difficult is each language, and that’s why you are reading this post. I know that most probably this is true, but you can search how difficult is each language. Some languages are not intended to be for beginners. An example of such a language is C++. C++ is a great and powerful language, but it is not a beginner friendly. To check if a programming language looks good to you, make a small google search and look for sample applications. Look how easy is to create a simple “Hello World” application. What looks better to you. Don’t worry if you don’t understand the specifics of the language, this is something you will learn. Just try to feel how easy the language looks to you.
Check code samples from C#, Python, and PHP. If you want to make mobile applications, you may also want to check Java, Kotlin, Objective-C, and Swift.
4. Resources available
5. Job Prospects and Future
The final thing you need to think is the job prospects and the future of the language. There are programming languages that are hot on the job market and some others that are not. Choose a programming language with many job opportunities in your market. Search your local market, unless you are willing to relocate, and see which programming languages are most popular. Each market and country may be different from the others. For example at the time of this writing, Python is gaining popularity quickly but not in my home country, Greece. In Greece, other programming languages are popular and with more job opportunities such as C#, PHP, and Java.
We cannot predict the future of a programming language, but we can assume that there are languages like C#, PHP, and Java that will not fade anytime soon. It is a pity to invest your time and energy to master a programming language and then after 3 years struggle to find a job. I remembered some years ago, Ruby on Rails was very popular and everyone was jumping on that bandwagon. Today Ruby is not that popular, and many Ruby developers are now transitioning to other programming languages.
So it’s time for my recommendations. I will tell you my choices and why I chose them. Below you will also find which programming language to avoid learning first.
C# (C-Sharp) is my programming language of choice. C# and .NET framework first appeared in 2000, and are used by millions of developers around the world. C# enforces solid Object Oriented principles (OOP) that are used in most modern languages. Once you’ve learned C#, you can learn other OOP languages pretty easily.
C# is a great programming language, made by Microsoft and is similar to Java. Actually, it is very easy to learn Java if you know C# and the other way around as both are OOP languages, and also they have very similar syntax. With C# you will build applications that run on the Microsoft .NET Framework or on the .NET Core Framework. The latter is a cross-platform framework that runs in Windows, Linux, and macOS.
The beautiful thing about C# is that you can develop any kind of application you want. You can create web applications by using the ASP.NET Framework or desktop applications, for any operating system you want. You can develop mobile apps for iOS, Android and Windows devices (by using Xamarin framework) but you can also create games by using the Unity platform. With C# you can develop whatever you want and you are not limited to a single technology.
To create .NET applications with C#, you don’t need to have a specific operating system or computer. There are tools like Visual Studio and Visual Studio Code that are cross-platform and let you develop and compile your application quickly, without the need to install any additional tools. To be fair, the .NET framework was created to run on Windows, and it still runs better on Windows.
C# is not a difficult programming language to learn. It is an object-oriented (OO) language, and the syntax is like Java. For sure it needs time to master it, but this is common for all programming languages. A beginner can start with C# and in a short time, be able to create an application.
Regarding resources, I can tell that there are many available out there. There are tons of books on Amazon while you can find many courses on sites like Pluralsight. If you have questions, it is 99.9% probable you will find the answer in Stack Overflow.
Because C# is such a popular language, there are many job opportunities in different job markets. C# is used for both web, and back-end development and many organizations use it to develop enterprise solutions. It is pretty easy to find a job as a C# developer and the salaries most of the times are above average. Along with Java, it is also used in the public sector, so if you intend to work for any public sector organization, then C# is a great candidate.
C# was released in 2000, and it is actively developed and supported by Microsoft. It is being used by millions of developers and is not going away soon. It is a powerful and popular programming language, and it’s worth to invest your time in it.
Python is my second recommendation. Python is a great beginners language. It is simple but still has lots of features. Python was first released in 1991, but it was not popular until lately. Python is one of the programming languages that is being used in machine learning and artificial intelligence projects. Nowadays, machine learning is a hot topic, and that helped Python to become a mainstream programming language.
With Python, you can create web and client applications but not games and mobile apps. It is an easy language to learn, and there are also some popular frameworks that will help you create a web application, such as Django.
You don’t need to have a specific operating system or device to run and create Python applications. It works better on Linux and macOS than on Windows, but still, you can work on Windows with no problems. Visual Studio Code and PyCharm are two great editors to use with Python, and they will help you learn the language faster as they have many advanced features like auto-complete and debugging capabilities.
Regarding resources, you can find many books and courses on the internet. Python is a popular programming language, and you will also find a ton of available questions and answers to sites like Stack Overflow.
Scanning the job market, you will find many job opportunities in Python but not in all countries. Python developers are popular in some markets while there are markets that don’t use Python at all. Make your research in your local market before you decide. Regarding salaries, Python developers on average are getting paid well. It is a high paid programming skill to have, and this is because nowadays it is very hot.
I believe Python will go nowhere soon. It is a great programming language, and it is the primary programming language which is being used in machine learning and artificial intelligence projects. I am not sure it will remain as popular as today, but it will not have the luck of Ruby anytime soon.
Programming Language recommendations per use
Let’s see a list of languages per programming path. Have in mind that there are more programming languages, but I included the most popular.
Back End Development
The most popular choices include C#, Java, Python, C/C++, PHP, Perl, Ruby, and SQL.
Client Development (Desktop)
The choices here could be: C#, Java, C/C++
Python and R are the most popular languages for machine learning.
iOS: Objective-C, Swift, C# (with Xamarin)
Android: Java, Kotlin, C# (with Xamarin)
The most popular choice here is C++. C++ is blazing fast and can perform all the complex operations a game requires. You can also create computer and mobile games with C# by using the Unity engine.
Now you know how to choose your first programming language. You need to have in mind that the first programming language is always the hardest to learn. The reason is that you need to develop both software development skills and learn the syntax of the language. Pick your language of choice and start writing code.
To learn and later master a programming language you need to write tons of lines of code. Books and courses are great resources, and we will discuss in depth both of them in another post, but to learn how to code you need practice.
Now I need to know from you which is the language of your choice. Write it in the comments below and let me know how easy or difficult was to create your first program. Let me help you if you have any thoughts or doubts.