What factors go into choosing a technology stack?

You need a strong foundation to build something lasting. That is why an organization's technology stack is so important — it is the underlying foundation that enables the team to build with confidence. Your customers may not see the technologies you choose, but the tech stack has an enormous impact on their experience.

Choosing the tech stack usually comes before development happens. But you may refine or replace components of the tech stack incrementally. Investing in new technology is typically a shared decision between the chief technology officer (CTO) and other senior engineers and developers.

But everyone in the organization has a stake in the tech stack — it becomes an important marker of the company's priorities and culture. Does your tech stack allow for scalability and innovation? Do you choose tools that integrate well with the other systems you have in place? Do you include internal teams in the evaluation process? From the start, you want to choose a tech stack that sets both customers and internal teams up for success — particularly if you will continue to incorporate more apps in your stack over time and need to account for interoperability across systems.

It is common for tech stacks to become part of an organization's identity. At Aha! we include these details on our engineering job postings. We know that applicants want to work with languages and frameworks that they are familiar with. Understanding a product through its tech stack facilitates discovery and collaboration between engineers.

You naturally want the programming languages, frameworks, and other tools that you select to align with the skills and experience on the engineering team. But there are other factors to consider as well — such as the type of product you are building, how often you plan to release new features, and how many customers you serve.

Of course, cost and time-to-value are also considerations. New tools may require extensive training or disrupt current ways of working. So you need to make sure that the cost of implementing new technology does not outweigh the benefits. You want to build a stack that meets your objectives now and brings continued value in the future.

What is a tech stack?

A tech stack, also called a solutions stack, is a collection of software services and programming languages that make up a web or mobile application. It usually consists of back-end (or server-side) systems and front-end (or client-side) languages.

  • The back-end stack consists of technologies that work behind the scenes to store and manage data and enable the front-end to do its job. These include operating systems, web servers, programming languages, frameworks, databases, and cloud infrastructure and services.

  • The front-end stack provides the interactions between a user and the back-end. Front-end development enables a web application to be visible on an internet browser.

Of course, there can be other supporting services and tools depending on an organization's needs and applications. The diagram below shows the layers included in a common tech stack. Each layer of the stack builds on the components of the layer below:

What are some common tech stacks?

Many development teams have preferences for particular services in a tech stack — usually as a function of familiarity or based on how well different components work together. For instance, NodeJS is a back-end JavaScript environment that many choose partly due to how it complements the front-end JavaScript language. Full-stack developers who are familiar with JavaScript can work on both the server-side and client-side.

The front-end or visual part of a tech stack is made up of the following:

  • HTML (Hypertext Markup language)

  • CSS (Style Sheet language)

  • JavaScript (scripting language)

Front-end frameworks and libraries are optional and include tools for creating responsive or interactive web pages and applications. For example, React is a component-based JavaScript library that is commonly used to build rich, interactive client-side web applications.

A few of the common tech stacks or combinations include the following:

Java and Spring

A combination of Java (back-end programming language) and Spring (the most-used web app framework in Java) that is typically selected by large enterprises.

LAMP

Linux (operating system), Apache (webserver), MySQL (database management system), and PHP/Perl/Python (programming languages) that tend to be found in legacy apps.

MEAN/MERN

MongoDB (NoSQL database management system), Express.js (back-end web framework), AngularJS or React (front-end frameworks), and NodeJS (server) that is largely used for cloud applications because of its ability to scale.

Node.js, GraphQL, and React

Graph QL (database management system) alongside a Node.js back-end server with React on the front-end. This combination has gained popularity because it simplifies the interactions between back-end and front-end teams. Front-end engineers can query data using a standardized syntax rather than asking the back-end team to ship a new API endpoint.

Ruby on Rails

A web application framework that utilizes the Ruby programming languages and tends to be selected by software and technology companies because of its flexibility and versatility promote rapid development.

The combinations above list the database management systems MySQL and MongoDB — it is also worth mentioning PostgreSQL, which is the most common database choice for modern app development.

An organization's tech stack can also include infrastructure automation tools, continuous integration and delivery tools, and cloud services such as Amazon Web Services (AWS).

What should I consider when choosing a tech stack?

There is no such thing as a uniformly effective tech stack. Different products and applications require different development tools. Time-tested technologies may not be right for the specific product or application your team is building, and new technologies might not have the needed functionality or support. Your focus should be on choosing technology that will improve the performance of your product or application — while allowing your engineering team to maintain the product's codebase and iterate faster.

Take the following factors into consideration:

Objectives and requirements

Start by considering your product vision and what functionality you will build to achieve that vision. For example, if your product or application processes large volumes of data, you need to prioritize technologies that process data quickly and cost-effectively. If you are building a stand-alone mobile app, your tech stack may be simpler — an iOS or Android app written in Objective-C/SWIFT or Java, for instance.

It is important to evaluate technologies from both a strategic and technical viewpoint. If you choose a technology that does not truly meet your needs, you can end up with technical debt that may have been avoidable with better decision-making upfront.

Team knowledge and upskilling

New frameworks or languages can appear to offer advantages, but your team may not have deep experience working with them. You will have to factor in the extra time it takes to learn the new technology. It can also be problematic if the new technology is untested and vulnerable to risk. But relying on outdated or ineffective technologies simply because team members have specific expertise can also compromise product quality.

End-user experience and time to market

A customer's experience (and satisfaction) drives demand and keeps you in business. You want to identify technologies that provide a high-quality experience and also allow you to quickly launch product updates. Your ability to bring new experiences to customers can help generate faster feedback so you can improve the product.

Cost

Consider the cost and overall value of the tech stack. Spending more money on ready-made tools may allow you to build your product more quickly but could come with tradeoffs if the tools are not as customizable as you need. Affordable technologies may have their own risks if they do not have the technical requirements you need. The right tech stack should minimize costs and bring more value in the long run because you are able to deliver a better product.

Security

Security is a significant factor for the business and your customers. But no tool is immune to security vulnerabilities — you have to discern the right balance of risks and benefits for your organization. A cutting-edge technology that allows you to ship quickly may be less battle-tested and more vulnerable. On the other hand, a battle-tested tool may better meet security needs but not allow you to iterate as quickly.

Scalability

Can your tech stack scale both vertically and horizontally? Vertical scale allows you to add features on top of the product's core functionality. Horizontal scale allows you to handle a growing volume of users and activity. You may also want to look for third-party integrations that make it easier to add or extend features.

Vendor support

If you anticipate needing vendor support or choosing enterprise tools, look for those that provide support. Can you reach the support team in the way you want — either by email, phone, or chat? If you ask a question, how quickly does their team respond?

Many of the technologies in your tech stack will likely be open source. In that case, vendor support is not relevant. But you may want to explore whether the technology has a broad base of community support — an indication that the tool will continue to be maintained.

The right tech stack for the organization

The process of choosing a tech stack can be fairly lengthy and overwhelming. It requires deep discussion with stakeholders, cross-functional planning, and practical hands-on experience. It can help to analyze what similar organizations or competitors are doing — without reflexively copying their stacks. A SWOT analysis can also be useful for evaluating your current stack or documenting a new technology's strengths, weaknesses, opportunities, and threats.

Take time to thoroughly vet and plan a stack that works for your organization. What you select now will largely determine what you can build and the experiences you can provide. Ask plenty of questions to get at the essence of what the organization, engineering team, and customers need.


Related articles

Sign up today!
Start your 30 day trial. No credit card required.
© 2021 Aha! Labs Inc.All rights reserved