How to Choose A Programming Language for a Project
Questions to ask when you’re choosing which language to use for your project
Choosing a programming language for a project is different than choosing one to learn. Often, people will tell you that there’s no choice. Certain languages are chosen as the industry standard, and you just have to adapt. With as little freedom as you have, there are still some considerations to be made when choosing a programming language. After all, it will impact the main constraints on your project, such as time, budget, resources, and maintainability, and etc.
In Corporate IT departments, this is often one of the issues technology managers struggle with at the beginning of many in-house software projects. Sometimes, the decision will stare you in the face when you’re trying to scale up legacy systems and bring them up-to-date.
When I was working in Corporate IT, our developers had to maintain high-performance applications that were time-critical. These applications were mostly written in Java and C++. However, as projects progressed, the need to scale up for performance was increasingly apparent.
Java’s handling of concurrency became such a problem that the team ultimately decided to try a different programming language, even when no one on the development team knew how to program in that language. The investment in time and budget ultimately meant the team had to take a huge risk. But, in the end, just rewriting one component allowed huge improvements in performance. It also allowed for more stability within a critical part of the application.
The lesson here is that often, the problems that we encounter in our IT projects will propel us to re-examine our programming language choices. This is an accepted part of the evolution of any IT project.
As a product manager, program manager, and technical manager, knowing all the moving pieces in a project is important. This is why it’s important to know how all the components of your project might lead you to choose specific programming languages. Knowing this will allow for a better view of the future of the project.
Any time you choose a new language, it’s a game-changing amount of overhead (resources, time, and effort) added onto your project. Having a good view at the beginning of the project and making a sensible programming language choice will lead to less time spent in maintaining the project, scaling up the project, and securing the project later on.
Ultimately, you want your software project to stay for the long haul, serving the business needs of your customers even through the business changes that may occur.
What Are the Questions to Ask When Choosing a Programming Language?
This is by no means a comprehensive list of questions. But it’s a list that can serve as a starting point to choose the programming language that you’ll need.
- Does the language have proper ecosystem support? Will the language survive for the long haul? Is there vendor support provided for the language?
- What’s the environment that the project will run on — web, mobile, etc.?
- Are there infrastructure considerations to using the programming language, such as new hardware required? What are the deployment considerations?
- Does the client prefer a certain programming language to be used?
- Are there specific libraries, features, and tools for a programming language that are the industry standard for this type of project?
- Can our developer program in this language? Do we need to hire new developers? Can our developers learn the new programming language quickly?
- What are the constraints of your project that are non-negotiable — time, budget, resources?
- What are the performance considerations of the project? Will the language accommodate the benchmarks and the performance?
- Are there any legacy codebase considerations for the project?
- Are there any interface issues with upstream and downstream systems or external systems?
- Does it need to integrate with third-party tools?
- Are there any security considerations?
How Are Programming Languages Being Used Today?
- Operating Systems: C, C++
- Distributed Systems: Go
- Enterprise Applications: Java, C#, C++, ErLang
- Analytics & Machine Learning: Python, R, Clojure, Julia
- Math & Scientific Computing: Matlab, FORTRAN, ALGOL, APL, Julia, R, C++
- Data Visualization: Python, R, Java, C#
- Big Data: Java, Python, R, Scala, Clojure
- Data Storage: SQL, C#, Java, Python
With a list of questions to ask and a list of programming language conventions, no matter what type of project you’re working on, you can make a sensible decision regarding the language that you use.
Asking the right questions will allow you to back up the usage with evidence supported by industry standards and conventions. In the end, making the right programming language choice will enable you to develop systems that will weather the changes in business needs.
What are you waiting for?