Author- Karan Jagtiani
Karan is a Software Engineer with 1.5 years of experience in the industry. Over the years, he has worked with various technologies across different domains. If you want to connect with him or get to know him better, you can visit his website: Karan Jagtiani
Choosing the right tech stack for your next project, whether it may be a personal project, a project for a client, or a startup, can be a daunting task. In this blog post, you will get an understanding of how to choose the right technologies and in what direction should you be thinking.
- Frontend Technologies
- Backend Technologies
- Popular Tech Stacks
- Factors to Consider while choosing a Tech Stack
If you want to understand what a tech stack is, refer to this article.
Now, let's start.
A tech stack or the set of technologies used in a project usually has a standard architecture.
Frontend, also referred to as the ‘client side’ is what your end-users get to see and experience. It could be a web application, a mobile application, or even a desktop application. On the other hand, we have the Backend, also referred to as ‘server-side’, which is responsible for taking care of the 'behind the scenes stuff' like APIs, Business logic, Services, etc.
Let’s jump into understanding how you can choose the right framework for developing the Frontend of your project.
So how do we overcome this problem you may ask. For this, we have frameworks!
There are tons of frameworks for web development out there, like Angular, React, Vue, etc. All of them have their own set of advantages. Because of this, it can be overwhelming to decide which framework to use in your project.
Angular is an open-source, TypeScript-based Frontend framework developed and maintained by Google. Unlike other frameworks, Angular enforces TypeScript for developing web applications which can be considered a good or a bad thing, depending on how you look at it.
The learning curve of Angular is steeper than its competitors i.e. takes longer to learn and get used to, but it is something that can be worth it in the long run. Companies that Angular are Google, Paypal, Samsung, UpWork, etc.
The learning curve for React compared to other frameworks is much more forgiving and it’s easy to get started. Companies that use React are Meta, Netflix, Airbnb, Uber, etc.
Vue.js, another open-source framework, was developed by Evan You and maintained by one of the largest open-source communities. It is a lightweight and performant framework that also has a forgiving learning curve. Similar to React, it allows a high level of customizability where you are not limited to how the project is set up, which is where Angular lacks behind. Companies that use Vue.js are Meta, Google, Netflix, Gitlab, etc.
Angular by default enforces TypeScript to write business logic in. Most of the other frameworks usually have support / a way of implementing TypeScript into them.
Here are a few tools that solve this problem while using our beloved frameworks under the hood:
- Next.js - React
- Gatsby - React
- Nuxt.js - Vue
- Nest.js - TypeScript
The Backend or the Server-Side of a project refers to the ‘behind the scenes’ logic happening in the background, not known to the user, that makes the project usable and functional.
Again, just like the Frontend, there are various frameworks to write your server-side logic which you should consider for your next project!
Ruby on Rails
Ruby on Rails is a robust web application framework that can be used as a full-stack development tool i.e. your entire application from Frontend to the database can be created using it, or it can be used as a standalone backend web server. It follows the principle of MVC (Model View Controller) which we will talk about later in the blog. Programming here, as the name suggests is done using Ruby (a dynamically typed, interpreted language). Getting started and setting up your project is very easy and quick. Companies that use Ruby on Rails are Twitter, GitHub, Shopify, Airbnb, etc.
Another open-source web application framework that is based on Python. If you are a fan of Python, then you will love this framework. It follows the Model View Template software principle, which is basically MVC itself but has different terms for it.
This framework also enforces guidelines on its developers like Ruby on Rails, one of the most important ones is KISS (Keep It Simple Stupid) which means that the code snippets should be very brief and easy to understand. Companies that use Django are Instagram, Spotify, Mozilla, Pinterest, etc.
It is one of the oldest frameworks for developing the server-side / backend of your application. Although it is old, don’t mistake it to be outdated. Over the years, various frameworks have surfaced which make development much better using PHP that implements a lot of the principles that we have talked about till now.
Frameworks like Laravel and CakePHP are a few that are widely used, as well as have a good community around them. Companies that use PHP are Meta, Wikipedia, Slack, WordPress, etc.
What is Model View Controller?
It is a software architectural pattern that helps in making your project modularised. By this, I mean it makes your code more manageable and it makes working with complex projects much easier.
- The Model refers to the representation of the data in your application.
- The Controller is responsible for handling the APIs in your application, basically managing the requests and responses of your application
- The View is essentially the part of the application that the end-user gets to see and interact with.
Nowadays, Views are not commonly used in the Backend since it’s better to use other frameworks for the Frontend like Angular or React.
Primarily, there are two types of databases:
Structured / Tabular
These are the databases that use a Row-Column format to store data. Here, the data can easily be linked with each other i.e created Relationships. This type of database is also known as a relational database. Examples of this type of database are MySQL, PostgreSQL, OracleDB, DB2, etc.
It may make the server-to-database connection a little slower because the SQL query first needs to be constructed. But, it provides a much better validation when it comes to relationships and datatypes. This type of database is much faster when it comes to data/tables that are related to each other. When it comes to applications where you want a structure that will not change a lot over time, this is the database type you should use.
NoSQL / Document Based
These are the databases that store data in documents / JSON format. Also known as non-relational databases or NoSQL databases. The documents by default have no relation with other documents. In order to form relationships, ORM (Object Relational Mapping) frameworks are required. Some examples of this type of database are MongoDB, Cassandra, CouchDB, etc.
The dynamic schema in NoSQL databases allows us to develop applications faster. It is also good for scaling as it uses a master-slave architecture, which is easy to scale horizontally. You should use this type of database when your data keeps changing.
Popular Tech Stacks
Similar to the MERN stack, the only difference here is that instead of using React, here we use Angular. The advantage this stack has is that in the Frontend it used Angular, which although has a steeper learning curve, brings TypeScript by default and its strict guidelines to the table. If you like the advantages of TypeScript and want your application to be stable from the beginning, this is what you should go for.
Similarly, you can replace Angular or React with Vue.js and it will be called the MEVN Stack :)
LAMP stands for Linux, Apache, MySQL, and PHP. This is one of the oldest coined tech stacks, which has been heavily used to date. A lot of people consider PHP outdated, but with the new frameworks build on top of it like Laravel and CakePHP, this is something that you should not overlook.
This is not a publicly coined term, but I hope it catches on! This is where you use different technologies with each other that are not widely used together. Various companies do this because there are different considerations taken into account for Frontend, Backend, and Database. A few examples of this could be:
- React, Ruby on Rails, and PostgresSQL.
- Angular, Django, and MongoDB.
Factors to Consider while choosing a Tech Stack
We will not be going over the comparisons between any framework or technology, because there is no one-stop shop or a perfect solution out there. You have to do your own due diligence and figure out which set of technologies will be the best for you. That is why we will be going over the factors you should consider while choosing the technology stack.
Some frameworks are easy to set up but don’t have a set of guidelines as to how you should set up your project. If one does not set up correctly and does not follow strict guidelines, then it can easily get out of hand and become a huge problem to maintain in the future.
Sometimes the methodologies and guidelines enforced by the framework can be good.
If you are new to any framework, you should consider how big is the community around that framework, because if you face any issues while development, it’s easier to move forward if that issue has already been addressed on Stack Overflow or any other site.
Depending on what your goal is, the learning curve for the framework is something you should also consider because if you are working on a startup project, then time to market can be something that is very important, or even if you are working on a customer project, meeting deadlines can get tricky if the learning curve or the friction to get started is too steep.
Don’t fall for the trap
I have seen a lot of cases where people fall for the trap of using a particular technology just because it is the latest. But sometimes the latest technology may not be the best, older technology that has iterated over the years with a good community may be the right choice.
Can help you land a good job
Having experience with working in particular frameworks can help you land a job in various companies. Usually, companies don’t care about your experience with specific frameworks because if you understand the principles and have experience in any one technology then you can work with the tech they use as well. But at the same time, there are a lot of companies that look for candidates with experience in particular technologies.
Though this shouldn’t be the deciding factor, it can certainly make you lean towards particular tech stacks.
Having a plan and a well-thought-out list of technologies will definitely help you in the future, but sometimes getting started and not worrying too much is what makes great products. So, what I would suggest is to go with what your gut says!
I hope that this blog gave you an idea and a gut feeling as to what technologies you want to use for your next project! Thank you for making it this far, have a great day :)