How to Choose a Programming Language
The best programming language is a problem that concerns many project owners. Popular technologies change fast and everyone wants to choose the fastest, the most scalable and modern way to develop a new software.
As a manager in a software development company, I often deal with a question, 'What language should my application be developed in?'. Here is my point of view on the subject which is applicable for the majority of new projects.
As a student at a University I was required to submit term theses. Those theses were supposed to have a special paragraph called 'Choosing a programming language'. Our professor wanted us - young software developers - to give reasons for the technologies used in the thesis.
The trick was that the technology was usually known beforehand - either it was prescribed by the course or our favorite language. But we had to give reasons for it anyway - the professors thought that we could acquire some useful skills that way. So we did acquire "useful" skills to give reasons for whatever technology.
It rarely happens that software engineers perform realistic analysis of modern technologies and give them proper grades. All the more so, one should spend a couple of years with a new technology to find its weaknesses and learn how to conquer them.
Therefore, be aware that opinion of software developers does not always address requirements of project owners.
Preferences of developers
Still, developers have some special insight on popular technologies and can give ground to some of them. Briefly, they prefer languages that are:
- around for years;
- fun to write in;
- supported by a large community;
- easy-to-maintain as the time passes by.
They avoid technologies that are:
- relatively new;
- bulky and complicated - that is, they draw much of attention to themselves while the engineers prefer to focus on the task proper;
- hardly supported or supported by a closed community;
- hard to upgrade - this is essential especially if the technology is new.
It is not that they cannot learn sophisticated stuff - certainly they can - but they are reluctant to obtain skills that may not be applicable in other projects. So, most likely they will recommend a proven stack.
This is prudent, but this is not all you should take into consideration when choosing a programming language.
Not all technologies are qualified equally. There are languages that have been around over years and years and there are technologies - very popular technologies - that appear to be shooting stars.
Some clients pluck at a new platform as soon as it gets promotion and gains first popularity. As the result they get sucked in unnecessary problems with upgrading and supporting it later.
Does anyone remember Backbone.js? It is still in the market, but I haven't seen new Backbone projects for last four years.
When Backbone.js lost popularity, its niche was occupied by AngularJS. Angular quickly gained great adoration because of Google promotion. Software developers liked it. But then Google stopped supporting the first version of the platform and launched a second version which turned out incompatible with the first one. As the result, all Angular project owners were left with an unsupported platform or had to go through costly upgrade procedure.
Another example is a Parse platform for mobile development. Everyone liked Parse, but it was acquired by Facebook and shut down a few years later. Not only were Parse project owners left with an unsupported platform, but they also had to migrate their applications to some other technologies in an urgent manner. There are many threads in the Internet showing broken hearted people because of that.
I believe that you do not really want to build your project on an "underaged" platform even though it is best-selling at the moment.
What other factors should be considered when choosing a development platform?
Think about how long you are going to live with the project. If it is a minimalistic product for testing purposes, feel free to use any technology suitable for quick prototyping. If it is intended for many years of functioning, go with a stack that has passed through a few major upgrades and gained a large community.
Think about who would maintain the project. Unless you want to be tied to a specific software development company, choose a widely used platform. If you outsource the project but plan to switch to inhouse development, check if there are developers with relevant expertise in your local area.
Find information about what technologies are used in live projects of the same size your project would have. Again, a minimalistic project can be developed in any language, but if it is to last for years, you may want to be sure that the engineers will not reach limits of the platform.
To sum it up
Even though choosing a technology stack seems to be a merely technical decision, it is not so. The best decision involves thinking from the business perspective and analyzing the history of software development.
If after reading this article you are still not sure what to choose, I would recommend considering Ruby on Rails. RoR is an open source platform, so it will not be shut down by any business shark. It has been around for years and passed through several major upgrades. It gained a vast quality-oriented community that produced a huge variety of libraries (so called gems) to solve typical problems. There are lots and lots of live Ruby projects of any size available in the market, so you may be sure that it suits all needs of a project owner.
So, choose Ruby on Rails for your project and you will never regret that.