The German industry information service Heise.de proclaims the most popular programming language in 2016. The winner is: Java. While this was less surprising for ingrained Java developers, especially younger developers will be skeptical about this result. Programming languages were always the subject of religious discussions (You can see that in the comments of the article). But it seems to me that recently these discussions intensified significantly because of the popularity of new languages.
If you look back 15 years, there were basically only two languages (at least in web development): Java and PHP. While PHP was used mainly by frontend developers which tend to put SQL statements in the HTML templates Java developers transformed every little project into a mammoth task. Some audacious Microsoft enthusiasts relied on ASP and JavaScript was only used for smaller snippets within the browser clients. Just with the rise of Rails that could be used to build prototypes of complete websites within hours Ruby could be established. With its lightweight approach the language fast got more famous besides the pure frontend development.
As mentioned before in the last five years more and more programming languages have come into the market that were not used only in a niche. Golang, Erland, Elixir or Scala have built a steady fan base. And especially when more applications are transformed from a monolith to an architecture with autonomous service every of this service could be theoretically build in another language. Still an exception are the mobile apps because here the languages (Java and Objective-C resp. Swift) are set by the platforms.
Which programming language you should use?
But what does that mean for the prospective developer, which language he should learn first? And which language should you consider for your startup or the refactoring of the legacy application? There is no easy and universal answer for both questions. This depends on the requirements and the goals you want to achieve. But there are some hints you can get.
For the apprentice learning a programming language that is lightweight and its structures are quite flexible is easier. Ruby and JavaScript are simpler in this regard then Java or C++. But in my opinion especially for beginners it is better to pick up a language with more structure that could be applied to other languages. For example, the problem with PHP is not that it is a bad language per se but it makes it easy to develop in a bad way. You can also develop in an unstructured way in Java but it is much harder. If you later switch from Java to Ruby you can adopt some of the basics and methodologies that helps you to keep the overview. This is similar to learning driving. Of course, a compact car is easier to oversee and more practically in some situations (for example if you are looking for a parking space). But if you learned on a big estate car or an SUV you can adapt the driving of a compact car more easily than the other way round.
Besides of that at least knowing a more common language will increase the chances to find a job. Due to the fact that there are still a lot of legacy projects in C, Java or Python (and new projects will using these anyway, see next paragraph) you can start with that and maybe introduce a new one later on by yourself.
Make an educated guess at new projects
And what about the startup? Here the choose of the programming language could be a fundamental part of the success. It is not about the language itself but more because of the ecosystem of the language. Normally two to three developers are working in an average startup at the beginning. Every single one of them is very important for the company and in case he will leave he has to be replaced as fast as possible. If you then introduced a very exotic language it could be even harder to find a suitable successor. In the worst case a third-party agency has built the first version of the application and made the decision for a more unknown language. Later on, you have to pick up that by your own and find experts to overtake the development work.
Additionally, you should take care that the number of used programming languages is as low as possible. The possibility that your frontend developers could also work in the backend area (and vice versa) could be very valuable especially in a small team. If every backend service is developed in its own niche language it will be much harder for new developers to catch up and get the overview.
JavaScript is some kind of special in this regard. Started as a pure frontend / browser centric programming language it more and more conquers also the backend with the help of Node.JS. Due to that fact experienced full stack developers can work both in the frontend and in the backend. But be careful, not every frontend developer can build backend services (and that applies even more for backend developers in the frontend).
Another thing you should have in mind are the availability of connectors for databases, services and other tools. There is an implementation for nearly every programming language. But sometimes this is the side project of a single developer that was updated seven months ago. It might be a good idea to look out for an active developer community. Otherwise you might not get any support in case of updates or bugs.
The “best” programming language doesn’t exist
Also in the future discussions about the “right” programming language will be driven by ideologies and prejudices. But besides that, especially in small organizations you should be careful not to follow every trend because the new programming language is so hip. It might be boring to choose the traditional language but your risk will be lower. Particularly if single developer demand to use the bight new and shiny XYZ-lang because it is so much better than the other ones you should only consider to do that if you have thought about that day when these people will not be around anymore.