In this blog post, learn what is the most important thing to consider when developing a new software solution and how to choose the right technology stack for your business?
When building a house, you use various “building materials”. The same with your digital product, you use different tools to build functional websites and applications.
The decisions regarding your future tech stack are going to influence your:
- application’s performance and scalability;
- the speed of creating your product;
- ability to find the right developers to take care of your software;
- the cost your company will pay for the project support and maintenance.
The real question is how to choose the right technology stack for your business? Don’t worry, this guide will help you.
What is a Technology Stack?
First thing first, let’s define what a tech stack is.
A tech stack refers to a set of programming languages, frameworks, and libraries. They are used together to help you create a website, a mobile app, or something that needs to be scaled up to serve millions of users. There are many technologies. Here are just some of the most popular: Python, Ruby, React, JS, Swift, WordPress, PHP, AngularJS, Flutter, Apache, C++, MongoDB, Node.js, and more. The tech stack is when I stack all these on top of one another to have an operating system, web frameworks, databases, and backend servers.
The coding and programs that the developer chooses affect how users will interact with an app and how many people will be able to get access to it simultaneously. In other words, a tech stack defines what an application is and what it can be.
The technology stack consists of two equally important layers: the frontend (client-side), and the backend server-side.
The Fundamentals: Frontend and Backend
A frontend developer is responsible for linking the design and technology together. In layman’s terms, everything that you click, swipe, drag, and drop on a website or app is client-side.
Let's quickly go through the core elements of client-side programming:
- Hypertext Markup Language (HTML) is a big part of frontend development you can’t live without. It’s a language that communicates with our web browser and dictates the structure of every page on the web.
- Cascading Style Sheets (CSS) is how developers add styling and effects to web pages.
Backend engineers design software architecture and logic. They write all the code that happens on the server-side. Picking the right backend stack is very important in the early stages of a project. When building a house, you don’t start with the marble facade or decoration. You start with a foundation and walls.
The backend consists of programming languages, frameworks, servers, and databases. The server side is invisible for users but it's the part where engineers develop and customize business logic and build software architecture.
Server-side is an umbrella term. It consists of the following elements:
- Programming language is a set of commands and instructions that are used to create logic for apps and websites. Ruby, Python, Java, C++ just to name a few.
- Frameworks are quintessential to web and mobile app development for countless businesses across the world today. Finding the right backend framework can be quite crucial for developers to ensure optimal performance and scalability.
- Whether it’s on-site or in the cloud, the server acts as the lifeblood of the network. They provide resources that networks need to run, including storage, security and encryption, and databases. Apache, Nginx, and Microsoft’s Internet Information Server (IIS) are examples of web servers.
- The database is a digital space to manage all the customer and product information. Any time you’re searching a hotel, product on online stores, or any other information, the database is responsible for accepting that query, processing the data, and returning it to the website. MongoDB, PostgreSQL, and MySQL are common databases.
Top Software Development Stacks
Although there are no two similar projects, some technologies are often used together. To save you time and money, you can use proven tech stack models.
The MEAN tech stack is one of the most popular tech stacks. The letters m-e-a-n stand for MongoDB, Express, AngularJS, and Node.js.
- MongoDB (NoSQL database).
- Express.js is a backend web framework.
- Angular.js is a frontend framework.
- NodeJS is an open-source, cross-platform server.
MEAN stack can be used for developing complex mobile and responsive web applications.
Ruby on Rails
Ruby on Rails facilitates the software development process thanks to its “gems”. Ruby gems represent software packages and libraries, including information about code and documentation. Gems allow developers to work more efficiently, reduce time spent on the product’s creation, debug code more easily and not reinvent the wheel for each new project.
RoR is highly scalable and can be integrated with MySQL.
Criteria for Choosing a Right Technology Stack for Your Business
This might seem obvious but believe me or not, many businesses still want to keep up with state-of-the-art tech trends and get the next “Facebook tech stack” for their project. When it comes to software development, this is not quite the right approach. Before choosing the right technology stack for your business, you need to understand the size, complexity, and business goals of your particular project. Not the other way around. If you choose the technology stack without a thorough analysis and strategy, you face the risk of financial loss or poor app performance.
Here are the basic things to analyze before choosing technologies:
- A go-to-market strategy
- A platform for building an app
- UX goals
- Load requirements
- Future scalability
Your project is unique, with specific business logic and requirements. So, when deciding its technology stack, don’t be a copycat by following someone’s strategy blindly.
Development and Maintenance Cost
After you’ve highlighted your product business and tech requirements, it's time to decide on costs and expenses. Namely, how are you going to get a solution up and running on a particular budget? For this, you need to understand the technology’s total cost of ownership (TCO), which is broken down into three components: talent costs, license costs, and maintenance costs.
Average software developer salaries
Here's also a survey conducted by StackOverflow on programming languages and salaries:
Each year you will have to pay for licensing the technology you choose. While there is an open source software that is technically free, there are still costs associated with it such as implementation, innovation, and support. On the other hand, you pay for the licensed technology and benefit from a more customized product. Additionally, you get improved security, greater scalability, ongoing support, and better functionality.
The other side of developing a digital product is the maintenance cost. What will it take and cost to support this technology in the future? The more customized your solution is, the higher your maintenance costs will be. For example, these costs usually include:
- Buying and maintaining servers.
- The time system administrators will spend on managing and adapting the system.
- Support services from the technology provider.
Size of community
Perhaps the most underestimated criterion when choosing the right technology stack for your business is evaluating the community of customers and developers around it. This one is very important as it directly affects how much information is available about the implementation of technology, the number of developers ready to work with it, thus making your product viable. The easiest way to check the strength of the developer community of a specific programming language is to check GitHub, Stackoverflow, or LinkedIn.
1. GitHub. Enter the necessary tech query in the search, for instance, Ruby, and follow such parameters as a number of repositories (projects), topics, and users. So, as you can see, Ruby has 345k projects, almost 1 thousand discussions, and 20k users.
2. StackOverflow. In the left-hand corner of the logo, click the menu icon and select Tags. On this page, you can see several questions, activity per day, and a week. If necessary technology is not displayed on the first page, you can use search. Also when you move the cursor at the technology, you can see the number of watchers (followers).
3. LinkedIn. You can also use this platform to estimate how many developers are working in your region/country or other locations. What do you need for that? Log into account, click on search, write a query, for instance, Flutter, choose "people" and then use filters, like locations and titles to narrow the results.
A system is considered scalable when it doesn’t need to be redesigned to sustain effective performance during or after an increase in workload. Scaling is not only about technology. It is also about how fast you can change or modify features and bring new developers into your team. There are two kinds of scalability:
Horizontal scalability, which means an ability of an app to handle more requests. Think of it as a railway system: to transport more goods, you add locomotives to increase your capacity.
Vertical scalability, which means adding new resources to an app to increase its capacity without damaging the overall performance.
Top security is the major concern for any digital product. No stack is 100% secure. You better go with the one that has a good reputation and can withstand breaches and cyberattacks. Most technologies have special security guidelines to follow. So if your product stores user data, you need to have solid authentication and authorization.
Here’s a short checklist on how to choose secure technology:
- evaluate how you’ll be able to control users’ access to the technology.
- make sure that you can control access and permissions at an object level, feature-level, and field-level.
- ensure that you can track who made which changes and when.
- allow only authenticated users to have access.
- consider technology providers with a strong reputation.
Frequency of updates
Before choosing the right technology stack for your business, check how often it gets updated and when was the last update. But how to understand that the technology you choose is being updated the way it should be? Where’s the golden mean? If a framework is updated too often, it’s most likely that it is in the active development stage. So it will be reasonable to pick something less volatile. At the same time, you don’t want to pick something that has not been updated for more than 3 months. An actively developed technology is constantly updated with new patches and hotfixes.
Age of technology
Pay attention to the version of the framework you are going to use. The general rules are the closer the framework version to 1.0, the more functionality designed by the original developer is implemented. The further away from the 1.0 version framework is, the more market adoption it has. Between 0.1 and 1.0 there have to be some systematic constant incremental updates.
If it is less than 1 and the software is being actively developed, I’d recommend you to look for more stable alternatives. It doesn’t mean that you can’t use this framework. However, there’s a high chance that developers may decide to introduce some breaking changes, and you’ll have additional expenses to keep your software updated.
Tech Stacks Behind Famous Projects
Besides their innovative business models, these companies invest heavily in the technology that powers their products. Here are a few examples of tech stacks of famous brands for your inspiration.
Netflix serves over 6 billion hours of content per month, globally, to nearly every country in the world. Building a system that can scale to that volume of customers while delivering high-quality video requires significant engineering effort.
Pinterest began as a small startup and has grown to a company that has over 450 million monthly active users.
Merchants of all sizes use the platform to power sales and at its peak, Shopify serves almost 80,000 requests per second. A driving factor behind the success of Shopify is its comprehensive tech stack.
Technology Stack and Product Development at CXDojo
At CXDojo we choose tech stacks for projects based on the unique requirements and needs of the business. Therefore, each project has a different tech stack. For example, for our client, a Ukrainian online store for selling merchandise for kids and parents, we are currently building a new tech stack. We’ve started by identifying five eCommerce frameworks: Magento, OpenCart, Bitrix24, Shopware, and Shopify.
We created a comparison table (according to the criteria that are described above) and filtered those that are most suitable for our project. We shortlisted three frameworks: Magento, Bitrix24, and Shopify. Further, we compared these three platforms based on the requirements of the client’s future MVP.
Shopify and Magento have the largest communities, while Bitrix24 has a more closed environment.
Bitrix developer's salary is lower than the one of Magento and Shopify. We also decided to exclude Shopify since it doesn’t support some integrations necessary for the client’s online store.
We have prepared a comparative document, where we provide all the necessary information about Bitrix24 and Magento. So far, the choice is up to the client.
If you choose the wrong technology, you may have negative consequences for your business. Among them unnecessary costs, long time-to-market, problems with attracting new clients or investors, and high reputational risk.
Summing up, when choosing a technology for your project, don’t be guided by its low price, popularity, or novelty. In addition:
- Don’t limit yourself and do everything using only one best technology. Perfectionism can kill your software systems. Choose the right technical solution for every task in your project.
- The framework allows you to speed up the launch of a software project. However, make sure to check the availability of good documentation and clarify the period of support for the framework, so that there is no trouble with a complete rewrite of your system in 2-3 years.
- Technology and programming languages are not the core of your project's success. When choosing the software development stack, always keep in mind the specific requirements of your project. The right processes usually guarantee the “right” result. Remember, 2-3 months is the maximum for launching the next iteration of a software project.
- Choose a trusted and experienced software development company that approaches both from technical and strategic.