Below are a few tips to assist you in selecting a tech stack for your custom software development project. Following these suggestions will result in an application that's robust and built to last.
Over the past decade, we’ve seen a surge of new platforms, frameworks, and languages for all types of applications -- each with different benefits and shortcomings. For this reason, it has become challenging to decide on a tech stack that won’t quickly become outdated. There are so many options that we often hear the question, “How do you know that you are selecting a language or framework that will last?”.
We often see projects that rely on technologies that can no longer be used. The primary goal for these clients is to rewrite their software using modern language and a framework that can be maintained. A few examples of outdated technology include Flash, Silverlight, and even jQuery to some extent.
For this reason, it is critical at the onset of a project to select technologies that will last the usable life of the software being developed. While we can’t predict the future, we’ve put together recommendations for simplified long-term maintenance as well as migration strategies if your tech stack is outdated.
What is a C-style syntax? It’s the language, or “grammar”. A C-style syntax indicates that the language statements and constructs follow that of the C language. Most modern languages follow that syntax, but some don’t. The most popular, C-style languages are C#, Java, C++, PHP, JavaScript, TypeScript, and Objective-C. Other language types are called Pascal-like languages, and others are completely different.
Choosing a C-style syntax matters because developers who know one C-style language can quickly get acquainted with another. Also, any code that needs to be ported from one language to the next can be done with minimal effort. However, porting C-style code to a Pascal-style code can be a very lengthy process and introduce new errors. This explains why most third-party APIs are available in a popular language like C#, PHP, or Java.
For example, Java is the property of Oracle, C# Microsoft, PHP is very popular. Selecting a language or platform from a renowned company will increase the likelihood that the language will stand the test of time. Microsoft, Google, and Oracle are companies that are here to stay. Anything backed by these companies is a good long-term choice. Therefore, we prefer C# and PHP to other languages. C# is made by Microsoft and has modern language features that make it very flexible.
PHP is a very strong scripting language that is over 20 years old and used so widely (it powers WordPress, Drupal, and most CMS’s) that there’s nothing wrong with selecting that language.
This is a different angle. Not all languages have the same community following. This is important because the size of the community is an indirect hint at the availability of special packages. In general, the larger the community, the higher the chances that special purpose libraries will be available.
Most projects need similar libraries: PDF generation, payment API support, logging, machine learning, full-text search, sorting, encryption, database drivers, image processing, etc. Not having to rewrite these from scratch and using ready-made libraries results in fewer bugs and shorter development cycles.
At Buildable we favor C# and PHP because they both have very large communities of programmers. We can always find special purpose libraries or code samples that allow us to do specific things. Simply put, using these libraries saves our clients money.
As with the size of the community, the availability of third-party packages is crucial. That means whether we can access, search, and update third-party packages. Some languages come with community or company powered websites that host the packages, manage versions, and make it very easy to integrate. Some examples of this are Nuget for C#, Npmjs for JavaScript/TypeScript, and PECL for PHP.
Programmers prefer to work with languages and frameworks that offer easy-to-integrate packages, that can be updated over the command line (npm) or within the tools (Visual Studio), without having to integrate entire project source code just to use a few functionalities.
The other important signal to consider when selecting technology is to look at release notes and see if there’s an active roadmap and whether the technology is often updated.
For example, Angular which is a front-end JavaScript framework is updated a few times a year, which provides a stable path forward. The knowledge that a framework is regularly updated and the regularity of its updates are strong signals that the framework will support new browsers, new devices and will support your app years into the future.
On the other hand, if some technologies rely on very old packages, as was the case for knockout.js, you should grow wary of using it in a production environment.
Not all languages are frameworks work with the same frontend stacks. A web stack, for example, is the ecosystem that will execute your code.
One popular stack is the LAMP stack which is a shorthand for “Linux + Apache + Mysql + Php”. It describes the environment in which the PHP code will be executed. It’s important to select a language and framework that allows you to change some components of the stack.
Apache used to be a very popular web server, but in recent years Nginx and other webservers have grown in popularity due to how much easier they are to configure or how much faster they are. Favor frameworks that provide sample configurations for multiple web servers, so you aren’t stuck with only one option.
MySQL is a great database, but since it has been acquired by Oracle, the community has questioned its long-term viability, and be able to switch to another database backend is important. Some frameworks are incredibly tied to the database, others are more resilient. Favor frameworks that make it easy to change databases, so you are not locked into a single solution.
At Buildable, we use a hybrid stack based on Nginx or IIS, MySQL, or SQL Server which allows us to be very flexible on the end technology choices and shift the technology stack requirement into a maintenance choice.
Being able to run your project on Windows, Linux or macOS provides the most flexibility. While that might not always be possible, it’s an important factor to consider.
Developers will primarily develop on a Mac or a PC. Thus, they will run local versions of the entire application. They may deploy the software on a Windows architecture or a Linux architecture, which may be completely different from their development environment.
At Buildable, that is why we select C#, PHP, or python as backend languages because we can run the production stack in any environment: locally on macOS, Linux or Windows, in the cloud on Azure or AWS hosted on Linux or Windows.
It’s important to make a choice that does not lock you into one single Operating System, so you can exploit cost savings in the hosting infrastructure when such choices become available.
Are you looking to find the right tech stack for your custom software project? Connect with our team and talk to our engineers. We’ll help you make choices that will give your project strength and longevity.
Talk with an expert at Buildable about your project.
Copyright © 2024 Buildable.
All Rights Reserved
Privacy Policy | Terms of Service