Picking a programming language is one of the most fundamental decisions developers can make when starting a new project. It will determine how development will occur as well as which tools, frameworks and libraries will be used not only for development, but also for building, deploying and running the application.
Of course one important aspect of choosing the right language should not be forgotten: finding developers. If the language is too obscure, undesirable or outdated then it will be difficult to find any. That is a crucial part that could make or break a project, but is often overlooked.
What is the purpose of your project?
Not all programming languages are designed with the same goals in mind. Some are, for example, better than others for web development while others are better for application development. There are highly specialized languages like R as well as more generic languages like Java. So first, it is important to determine what the purpose and goals of your project are.
If you are developing a web application, you might want to start with looking at languages that are popular in web development such as Node.js, Java, PHP, ASP.NET, etc. However, if your project is a native application, you might be better off with whatever language your target platform has the best support for such as C++ or Swift. If you have a small team and need to support a multitude of platforms, you might consider a framework such as Electron or React Native.
Of course it is possible to create a web application in C++ and there are even frameworks available for exactly that purpose, but is it worth the extra time and effort it takes to make a stable application in C++? On the other end, it would be almost impossible to write a complex 3D rendering tool using Node.js. The low-level performance that languages like C++ or Rust offer just wouldn’t be there.
Availability of Frameworks
Determining the purpose of your project as well as the target platform (web, a specific operating system, etc) is the best starting point for picking a language as it not only allows you to narrow down the number of languages to a select few, but will also make it possible to check framework availability.
A plethora of well-supported frameworks offers flexibility and reduces development time. The less you have to program because a framework can handle the task, the more time can be saved on boilerplating. Developers can then focus more of their efforts on what makes the application unique.
Needless to say, it is critical that your language of choice has well-supported frameworks if they are going form part of the core of your application. Often these are community-driven, but some can also be backed by major sponsors or developers such as Microsoft, Google, etc. Frequently, both are the case.
Community and Popularity
The community surrounding a programming language does not just determine how well-supported its frameworks are, but also how easily available help is for developers if they get stuck. The more popular a language is, the more help developers can expect to receive or find online.
This can save a lot of time. If developers have to sit and work on a problem for hours on end without making progress, it slows the entire project down and demotivates the developers. If they can go online and post a question in a forum or even find an answer to their question in a blog post or in a forum where someone else has already asked the question, it means they can easily fix the blockade and move on.
Of course, the size of the community also impacts the language itself, particularly if the language is open-source. The more developers that use and support the language, the more often it is going to be updated with new features, bug fixes, security updates, etc.
If a language is proprietary, the company behind it may pull the plug on it if the community is too small. It would be terrible to have written an application on a language that no longer receives updates or support and could have a serious impact the long-term stability of your application.
Even if a language has a large, thriving community, it is also important to consider its learning curve. If the project’s developers are experienced in the language of choice, then this point is moot — at least potentially until new developers are hired. Some languages, like Perl, are common and have large communities, but finding developers who know Perl well is difficult. That means they need to be trained in the language costing time and money.
Fortunately, Perl’s learning curve is not too terrible, but other languages like Rust are infamous for their steep learning curve. If new or even current developers have to learn it, it will take up valuable time they can use to work on the project itself.
It is therefore important to choose a language that has a good balance between what the project requires, the availability of developers who know the language as well as the time and effort it takes to learn it.
Time and Budget
All of this, of course, plays into how large the project’s budget is and how much time there is to first release. Developers are expensive and as such are going to form one of the largest parts of a project’s budget which means it is important to consider how they use their time.
Even if it never happens, an endless budget would mean developers could try out new languages and frameworks and potentially spend part of their time even contributing to these if they are open source.
However, if, like practically all projects, the budget and time are limited, developers need to be able to focus on the project’s primary purpose. This means choosing a well-supported language with a high availability of solid, stable frameworks so that they can avoid reinventing the wheel.
Sure, choosing C for a web application is doable, but it would mean spending much more time and money building an application that could potentially work just as well in PHP or Java and be done in a fraction of the time. Is the performance boost that would come from using C worth the time and money? There may be scenarios where it is, but for the vast majority of projects, it’s highly unlikely.
Choosing a programming language is one of the most important decisions you can make when starting a new project. It affects how development will be done, how quickly and efficiently it can be done, the long-term stability of the application, how easily it is to find new developers to work on it, how well it will serve its purpose, and so on.
It is hard to create a definitive list of what the choice of language affects as there are just too many factors.
The best way to pick a language is to find one that balances the project’s needs. No language is perfect and compromises will always have to be made, but some are going to have a larger impact on the project than others. The best way to choose is to just keep in mind what is important to the project and decide accordingly.