Created: March 23, 2021

Tech Stack 101: How to Choose a Stack of Technologies to Fit Your Project

Tamara Mun.

Tamara Mun

ex Software Delivery Manager

Project Management
Tech Stack 101: How to Choose a Stack of Technologies to Fit Your Project

The idea that developers use code to create complex applications is correct yet superficial. In reality, every development specialist will use a very specific set of tools to get a job done. As there are always many available tools to complete a certain task, you want to be sure that the instruments chosen by your development team meet your needs. 

We in the industry refer to this collection of instruments to be applied in a project as the tech stack.

What is a tech stack?

A tech stack is essentially the array of technologies one chooses to build their project with. It is composed of solutions you prefer to create such elements of the system as the application and data storage, DevOps tools, and business-centric integrations.  

Let's take a look at an example. Netflix uses a combination of Python and Java to power its back-end. React is used for the front-end of the app. They use MySQL and PostgreSQL to handle the databases. And finally, the streaming giant relies on Amazon to take care of the infrastructure.

The combination of these and other technological solutions was chosen purposefully to match the exact needs of the business, as every element is designed to allow flawlessly streaming videos, downloading content, and receiving relevant suggestions. 

Obviously, each software development project is unique so there's no universal formula for picking the perfect tools. The right choices can only be made based on thorough analysis in each case.

How to choose a fitting tech stack?

Now that we've settled on the importance of having the right tech stack from the get-go, let's dive into the process of defining one. 

There's an effective workflow that helps both the team and the customer understand the needs of the project.

Crucial elements to consider when choosing a tech stack

There are some obvious factors you'll need to consider when choosing an appropriate tech stack. For instance, a banking application that has access to personal records and accounts of clients needs to be built with security in mind. A video streaming service, on the other hand, should focus its tech stack around handling high load. 

Start with figuring out the scope of your project:

Time to market is yet another crucial aspect you should think of before settling on a tech stack. There are times when speed is of the essence and, as such, integrations and as-a-service products are your best friends. Keep in mind that you'll need to invest in replacing them with home-made alternatives when your project succeeds and grows. For now though, stick to the basics and get the product running.

Lastly, there's the aforementioned security. It's best to keep it in mind from the get-go when there'll be at least some sensitive user data involved.

Risks of choosing a wrong tech stack

Landing on the perfect tech stack for a project is quite rewarding. You will end up with a scalable development cycle capable of adjusting to business needs, the skill of your developers, and the availability of resources.

Wrong tech stack choices, in turn, can lead to these problems:

Integrations and As-A-Service products VS custom components

Discussing third-party integrations, we focused on their potential negative aspects, but in fact, an integration is neither good nor bad in itself. In some cases, third-party tools are absolutely necessary. 

Let's imagine you are just starting a brand new project. Investments are slim, there's no proof of concept yet, and your audience hasn't even laid eyes on the product. Investing time, effort, and resources in building every feature from the ground up is simply a waste at this stage. 

Another type of a project is a large-scale one with a lasting history and an impressive user base. It can still benefit from a plethora of additional tools, but frankly, integrations rarely make sense at this stage. Third-party solutions are a jack of all trades. They will often lack specific elements of functionality you may require as the project grows in scale. 

In other words, integration can become a bottleneck at later stages of development as it simply doesn't have the functionality you need and there's no way of adding it. 

Then there are SaaS, PaaS, IaaS, or other as-a-service products. They may sound similar to an integration - at least on paper - but they are, as the name suggests, services. The difference is that your product is not integrated with them. Instead, you use them to perform a set of specific functions and all of the management, new feature development, and support lies on the shoulders of the service provider. 

Aside from this obvious benefit to using aaS, there's also the fact that most of the services that could have been done by now are already available, so there's no need for businesses to reinvent the wheel. It's much more efficient for smaller companies to build their product using available resources and run things from there with actual feedback on hand. Largest companies should delegate those elements that are not mission-critical as well (whenever it makes financial sense). DropBox, for instance, was using AWS services straight to the point when developing their own data centers was more cost-efficient, while Netflix still relies on AWS just because it's cheaper that way for them. At least for now. 

That said, aaS products fall to the same shortcomings of integrations: they lack the scalability. Every business will outgrow them sooner or later whether due to the potential financial gains or to security limitations. 

So, should you use integrations in your tech stack?

Pros:

Cons:

What about developing all systems in house?

Pros:

Cons:

Bottom line

There are no silver bullets in software development. Every project, even if it is similar to other solutions, is unique in at least one way. That's why putting your finger on the perfect tech stack is one of the most important strategic decisions you'll be making throughout the entire development lifecycle and even far beyond it. Please, consider the factors we've mentioned in the article above when designing a scalable, future-proof tech stack.