One of the first — and most important — decisions we make for any software development project is selecting the right programming language. Matt Henley, our vice president of client service in Kansas City, provided insight as to how Twentyseven Global finds and selects the best languages and frameworks to solve our clients’ unique business challenges.
According to Henley, selecting the correct programming language is a decision that needs to be made very early in the process. We treat this decision making process with a very high level of emphasis, and it’s a collaborative effort amongst our internal team as well as our clients.
Here are the factors we consider when choosing a programming language:
First, we identify any unique business or technical requirements that lend themselves to a particular language. All programming languages have trade-offs, so our primary focus is understanding what a client’s specific business challenges are and then selecting a language that best aligns with their individual needs.
We take into account what, if any, physical environment the client is currently operating in or what they may aspire to be in. For example, if they already own a large Microsoft-based server environment, that may push us towards choosing a Microsoft-based solution. If the client is looking to move to a cloud/PaaS environment, we may suggest a platform that can more easily be containerized. In addition, since the software language can dictate size and scalability options in the long run, we will also factor those concerns into our decision.
Overall Client Fit
While we like to engage with our clients long-term, we understand that at some point we may need to transition a codebase to another team. We take into account access to and availability of the necessary skill sets to ensure the long-term sustainability of the codebase.
Key Differences Amongst Languages
With so many programming languages to choose from, it’s best to start thinking in broad functional terms before narrowing in on specific language. We’ve highlighted some of the key differences and use cases for a few of the most popular languages.
Mobile App Development
When it comes to mobile, we’ll start by discussing trade-offs between a native options and hybrid/JS solutions. We recommend native languages (like Objective-C/Swift for iOS or Java for Android) in order to provide the best user experience and app longevity combined with less maintenance. On the other hand, many clients opt for hybrid/JS solutions (like React-Native) as they can reduce the overall cost and time-to-market.
Web App Development
For a web application that has unique needs, but also common components like identity management, we will likely discuss a C# or JS-based framework leveraging standard web frameworks like .Net or Node/Express. Need to solve very unique business challenges, or rapidly prototype? We might start with Python or Go to speed up the time-to-market. If we’re working on embedded firmware, then we’re likely using C++.
Other Factors to Consider
The selection of the programming language itself is only part of the equation. As you move up the technology stack, you can have very different uses of the programming language with different frameworks. For example, AngularJS (Client side MVC framework) is very different than Node.JS (server side runtime environment). Typically, the decision as to what language we use is as much dictated by the frameworks chosen.
It’s important to note that in a post-monolithic software world, these decisions aren’t mutually exclusive within an application ecosystem. We are increasingly implementing microservice architectures so that we can run individual services built on disparate programing languages and frameworks. In that way, we can ensure that each specific task is being served by the best possible platform. With our breadth of experience and expertise, we feel confident that we can guide our clients to the best software platform.