7 Key Elements that you should consider to select your Technology Stack
What is promised is debt and this post is proof of that. In the last post, we talked about the most popular programming languages in 2018 and part of this year. But that information is not enough if you are developing software or at least you are planning to do it. One of the most important things is the tech stack or technology stack that you choose. So, we make this post to clarify this task and to give you a guide about how to do it.
First of all, the meaning of tech stack
A technology stack is a group of software, programming languages, and tools used to create and develop a website, web, mobile or desktop application, etc, in all of its sides, we mean on the client-side and server-side.
This type of architecture that separates these two worlds is known as client-server architecture or API architecture.
In the previous image, you can see on the server side the Database component, this is a real depth topic that we will see in a later post. It is a promise!
Going back to the subject of the sides of an application or websites, the server side also is known as the back-end, and the front-end is referred to the client side.
This separation is important because for each side you will have to choose software, programming language or a framework to use, and each of these technologies is part of your tech stack.
What does it mean?
This means that your tech stack is conformed by the following components
- Back-end tech stack
All components that are part of this stack are the managers of the logic or the Business Logic. They work behind the scene because the end user will never have direct contact with them.
An example of a back-end tech stack is the famous LAMP which is Linux, Apache, MySQL, and PHP.
When you choose a programming language for the back-end, like Python, then you will have to select a framework written in the same language.
Frameworks will provide you with implementations for some common features for applications like user authentication, data access, validations, serialization, etc.
This is an example of famous languages with frameworks:
Now, there are two new trends that are in the Serverless computing options. We personally use them.
With the first, you won’t have to manage the infrastructure of your servers. You just will have to hire a service that does that for you. The companies that bring this service called “Infrastructure as a Service” are providers with public clouds such as Amazon AWS, Google Cloud, Heroku, and IBM.
The second trend is called “SAAS” which means software as a service. With these services, you don’t only have someone that manage the servers you, you will also have software and tools for building yourself your Business Logic usually using a friendly interface and a few services and languages of the back-end. The last two examples we showed you are inside of this category (Firebase and 8base) and we use them.
- Front-end tech stack
These components will give to you the visual part of the application. This is the face of your app or web page which users will see and interact.
Other options for tech stacks
There are other options for tech stack mainly for web pages. This architecture is known as a monolithic approach because with a unique stack you can build the whole system, for example, Wordpress or Gatsby.
Tips for choosing the tech stack
1. Mobile or web
This is really important because depending on the final destination you would use a determined technology, programming language, etc.
As we said before, for the web we useReactJS while for mobile we use React Native when we are building the user interface. So, the front-end tech stack changes depending on the destination of your software. Think and define this before choosing.
If you are developing an app for web, but you know that a good percent of your final users will visit your software by their mobile phone or tablet, don’t forget to add tools on your tech stack that make your website or web app responsive.
Here applies the principle of “mobile first”. A huge percent of users navigate on the internet using their mobile devices. To be more exact, more than 60% of people do this, so this is more than a desire it is an absolute necessity.
For web the most popular option is Bootstrap.
3. Simple and easy(agile)
When you are choosing your tech stack don´t forget: less is more. If your project is simple don’t complicate it with complex and many elaborate technologies. On the contrary, make it easier and agile.
Choose the minimal but functional components of your stack. In that way, you save time and your team will feel better and more comfortable building your software app or web.
For example, ExpressJs is built to start very simple and faster, and Django it has more steps to be set up but it has more tools to use.
4. Think twice in your requirements
Though you cannot believe it, depends on what you want and what you need, a specific language works better than others.
For example, if you are developing on machine learning, a big data project or any project related to artificial intelligence, Python is a better language than others because this is its specialty.
You just investigate and consult to specialists and be sure of your tech stack is the better option to your project.
Python is very popular in data analytics because it has many libraries and tools developed for this area, whereas Java.
5. Bet for open source technologies
There are many many technologies open source or even free software that are really good, functional, and perfect to build an app or a web.
All technologies that are open source give you the opportunity to get good software, tested and improved for other people, but also give you the opportunity to change its source code and adapt it better to your necessities.
Before you choose an open source technology or your stack, don’t forget making the next questions:
“What kind of license does it have? Does the language or framework have the features you or your developers need? How many core developers are there? You can check out the contributors or stars in the Github repository and how they have evolved over time.”
6. The ecosystem should be solid
This is really important. When we talk about the ecosystem of a determined technology we are referring to people and tools that are around it.
This ecosystem is very is very important because it will give you tutorials, articles, packages, solutions to errors, FAQ, and information to take the maximum advantage of the technology you plan to use or you are using at the moment.
An ecosystem is a kind of community and you have to be sure that this community and tools are the right for you. So, it should be solid.
A very important piece to check is the popularity of the tools, the most popular tools have more available developers to join your team
7. Long-term and support is important too
Our best recommendation for you when you are choosing a tech stack is that make how future-proof technologies are.
It would happen that you prefer the newer technology, but that’s not always is the best. There are some mature technologies that can get you more reliability. Or it would happen the opposite, That you trust too much in the solid and older technologies, and you are out of the latest technology radar.
The best you can do is investigate and know the life-cycle of each technology you are considering.
Search if people are using it, reviews, experiences, how is considered by people who used it and who is using it now.
Also, evaluate the support that the vendor is offering you or maybe if there is a big brand that is supporting this technology. For example, Google is behind Angular, and Facebook is behind React. How big is the community that it is behind?
You should check too how are updates handled? How easy is the migration process? If they have incompatible versions, etc. All of these aspects will help you to take the best decision.
If you had not chosen your tech stack until now, we hope that now you can do it successfully following these tips and information. We will continue bringing more information about this. Just visit us frequently or subscribe to our newsletter. Good luck and success with the software you are developing.