What is the Best Programming Language? The One You Enjoy the Most

What is a programming language? What is the best programming language? What programming language should I learn? These are the questions often asked by new programmers. In this post, I will try to give an answer to these questions and help you choose the "best" programming language.

With so many programming languages, methodologies, frameworks, how can one choose a specific one to use? Apart from few domain specific ones, most of them accomplish the same task, just in a different way. They are just tools used to get something done.

Programming Lahguages are just Tools

If most of the tools accomplish the same task then why put effort in choosing a specific tool? Just choose one with most demand at the moment, or one that looks most "easy".

Well, its not that simple. Everyone is unique. One tool may work for one but may not work for the another one. One may be productive in a particular tool while the other may not be. Some may like descriptive languages while some may prefer concise ones. There are so many other factors, but It just boils down to personal preferences of the user.

How to choose the best programming language?

Choosing the right tool for the right job will surely do increase productivity, but what will increase it even more? Interest in the tool you are using.

Programming languages are used in lot of different fields. Be it web development, hardware, fintech, artificial intelligence, web scrapping and you name it. So the first step will be to see what field do you like the most. I recommend you to take this decision wisely. You can refer to introductory material on these fields or look for some open source projects on them and try to ask yourself, "what problems do they solve and how?". Don't forget to actually try them yourself by writing few toy programs.

Now have you choose a field? Great now what tool to use? As I mentioned above, there are lot of different tools and almost all of them do the same thing. Lets take an example of web-development. There are lot of frameworks for frontend side and in backend side you can use literally any programming language. Now the choice is yours. Do you like statically typed language, faster runtime speed? There are many options like Go, Rust, C++, Java etc. Do you like dynamically typed languages, faster development speed? There are too many options like Python, JavaScript, Ruby etc. This list just never ends. Its important that you choose what you like the most.

My Personal Experience

Disclaimer: Everything in this section is my personal opinion based on personal experience. I am not trying to promote or shame any technology.

I used C++ for around six months before I realized it isn't for me. Few things that I didn't like about C++ were:

It was okay for small to medium projects, but as soon I started using on big projects, I started feeling unproductive.

After completing the project, I started researching more about alternative programming languages. Since I had already made my mind on what fields to avoid, it wasn't much hard for me to narrow down the available options. The fields that I usually avoid are: embedded hardware, mobile development. Though again it's my own opinion. You should also make your own list.

I came across many options but I choose two of them: Go and Rust. Both looked good to me. Statically typed, compiled, fast and safe. I started with Go first and made some small projects in it. Soon, I realized that its too verbose for my needs and stopped using it. It was a different kind of verbosity as most of the verbosity comes from error handling, same lines were repeated <<<<<<< HEAD everywhere. Then I moved to AI engineering, but also kept learning backend ======= everywhere. Then I moved to data science, but also kept learning backend >>>>>>> d38588ac18db1b0dc8928a3f471ac9cd93d9cc3e side by side. After that I never looked back. I wish I had made this decision earlier and shouldn't haven't wasted time in mastering things I don't enjoy.

So I would just like to end this article by saying that you should take your time when choosing what tool to use. I am not saying that you should stay rigid at a particular tool. I am saying that you should notice patterns of what things you are most productive with. It could be anything. Static, dynamic, OOP, functional, verbose, concise or even a combination of them.