“What’s the best technology to use for my software development project?”
As a custom software development firm, this is one of the most common questions we’re asked. Choosing the best programming language, library or technology stack is essential to successful software development, regardless of the problem you’re trying to solve.
In general, we think you can write good software in Java, C#, Python, PHP, or any other myriad languages. You can also write really bad software using any of those. To us, the adherence to widely accepted design principles and philosophies is more important than the specific language. As a tech-agnostic provider, we’ll find the right tool for the job, in the tech stack that’s best for you.
Here are the seven critical factors we consider when determining the optimal programming language for each project:
1. Type of application
Web applications, mobile applications, embedded firmware, etc. – the type of application you’re developing heavily influences what languages are available for us to choose from. General programming languages like Java, JavaScript, Python and C# can build different types of applications on different platforms. There are also cases where specific languages work better. For example, building a native Android app requires knowledge of Java, building a native iOS app requires a Swift or Objective-C skill set, whereas knowledge of C or C++ is critical if you’re working with embedded firmware.
2. Complexity of the application
The size and complexity of a project play an important role in deciding which stack or technology we want to use, which in turn is a deciding factor on what programming language to use. Small projects such as simple marketing sites, portfolio presentations and simple web application forms to collect data can be done with some CMS systems like WordPress or Umbraco, which requires knowledge of PHP or C#, respectively. Medium-sized projects including e-commerce sites, internal enterprise applications and IoT solutions usually have different layers, components and integrations where a more general programming language such as Java or C# could help simplify skill set requirements to maintain the products. We typically break down complex applications into smaller components where each element serves a specific function and uses a different technology stack and language to yield the best result.
3. Company culture
Every company has preferences regarding open source versus proprietary software and internal versus external technical support. One company might prefer a programming language that’s easy to learn, while another may need a language that is more scalable. All programming languages have trade-offs, so our primary focus is understanding your specific business challenges and then selecting a language that aligns with your individual needs.
4. Time to market
It’s important to think about the skill set of your current employees. Is it feasible to introduce a new program or technology to your team? Unless there’s a compelling reason to introduce a new technology, we always recommend leveraging existing skillsets to bring new ideas to life faster. Exploring new languages and technologies is better saved for projects with longer timelines.
Another consideration that impacts time to market is the physical environment you’re currently operating in or what you may aspire to be in. For example, if you already own a Microsoft-based server environment, we may choose a Microsoft-based solution. If you’re looking to move to a cloud/PaaS environment, we may suggest a platform that can more easily be containerized. Because the software language can dictate size and scalability options in the long run, we also factor these concerns into our decision.
5. Maintainability
Every technology stack and language comes with an ecosystem of libraries and vendor supports for those libraries. We want to look at the trend and update release cycles to make sure what we pick is current and stay current for some time to come.
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. If you plan to hire an internal developer team to maintain your technology stack, maintenance costs will be impacted by the availability and expertise of development talent in your area. For example, in the Midwest, it’s easier to hire Java and C# developers than Ruby, Python or PHP developers. We take this into account when selecting a programming language to ensure the long-term sustainability of the codebase.
6. Scalability and performance
Scalability is more about a technology stack, which in turn determines the programming languages rather than the programming language itself. Some battle-tested and popular stacks that have proven to be capable of such scalability include .NET, LAMP, Ruby on Rails (RoR), MEAN and Java Spring.
7. Security
Every application has different requirements in terms of security. For example, healthcare-related applications might require HIPAA compliance, or financial applications might require PCI compliance. We also take more general security recommendations like the OWASP Top 10 into consideration when choosing the right stack. Keeping an eye on the security bulletin for your chosen stack will help the application be more robust.
It’s important to note that in a post-monolithic software world, technology decisions aren’t mutually exclusive within an application ecosystem. We’re increasingly implementing micro-service architectures so we can run individual services built on disparate programming 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 and by sticking to the hallmarks of good code – Maintainability, Simplicity, YAGNI, DRY, SOLID and Testability – we are able to consistently guide our clients to the most effective technology solution.
If you’d like to learn more about which programming language is the best for your business needs, visit us today at 27Global.com.
This post was originally published on 11/17/2017 and updated on 7/9/2020.
Phuong Nguyen is 27Global’s Chief Architect. Founded in 2008, 27Global designs, builds and operates custom software solutions for businesses of all sizes. The perfect pairing of a local leadership with offshore pricing, 27Global has the business acumen to understand your vision and the expertise to build your software solution. To learn more, visit 27Global.com or connect with us on LinkedIn and Twitter.