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 you learn first?”. We will cover the reasons behind that decision, and I am sure you will make the 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 choose software development as a career path or as a hobby I can tell you 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 about 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 about before making your decision and one truth.
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 it 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 about is what your intention is. It is essential to know what 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 are 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 later.
A small hint is that most of the people who want to learn how to code want to create games.
I must 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 at 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 an excellent 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 with different intentions.
2. What is your environment (Mac, Windows, or Linux)?
Now that you know what you want to create, you have to think about what your environment of choice is.
By writing environment, I mean the operating system of choice and your computer.
This is also a key 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 choices.
3. Difficulty Level
The third thing you need to think about is the difficulty of the programming language.
You will think that you don’t know how difficult each language is, and that’s why you are reading this post. I know that most of this is true, but you can search how difficult each language is.
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, do a small google search and look for sample applications.
Look how easy it 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
The next important thing you need to think about is the number of available resources.
As a beginner, it is vital to be able to find code samples and answers to any question you may have to sites like Stack Overflow.
You don’t want to spend most of your time Googling around for answers. Look for a programming language with many resources available.
Search on Amazon for beginners’ books. Check the available courses on Pluralsight, Udemy or Treehouse. The more popular a programming language is, the easier it is to find resources.
A final tip is to always look for solutions on the programming language itself and not for any frameworks around the language.
For example, don’t try to learn Angular or React if you don’t know the basics of JavaScript.
5. Job Prospects and Future
The final thing you need to think about 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 remember 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.
Recommendations
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# (C-Sharp) is my programming language of choice. C# and .NET framework first appeared in 2001 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 easily.
C# is a great programming language, made by Microsoft and is similar to Java.
It is quite easy to learn Java if you know C# and the other way around as both are OOP languages, and also, they have 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 you 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 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 2001, 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 investing your time in it.
Python
Python is my second recommendation. Python is a great beginner’s 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.
Do 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.
What to avoid (JavaScript)
But now that you know my recommendations, I will also tell you which programming language to avoid as your first one.
You should avoid JavaScript!
Even if it is a widely used programming language, and it is used in web development, it is not a language you can build your programming skills.
JavaScript is not a very structured language, and a beginner can easily fall into many traps. If you plan to be a web developer, then you will learn JavaScript eventually, but it is much better to start with a different programming language and later learn JavaScript.
Programming Language recommendations per use
Let’s see a list of languages per programming path. Bear 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++
Web Development
The choices include C#, Python, PHP, Ruby, JavaScript, Typescript, and many others.
Machine Learning
Python and R are the most popular languages for machine learning.
Mobile applications
iOS: Objective-C, Swift, C# (with Xamarin)
Android: Java, Kotlin, C# (with Xamarin)
Database Development
The only choice here is SQL. There are databases where you can write functions in other languages, like C# (SQL Server), JavaScript and Python (in PostgreSQL) but in general, you will only need SQL if you want to be a database developer.
Game Development
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.
Conclusion
Now you know how to choose your first programming language.
You need to bear 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 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 it was to create your first program. Let me help you if you have any thoughts or doubts.