By Kees Veldhuizen on Oct 13, 2020
A tech stack is the set of technologies to build a web or mobile application. If you can, you should always use the newest technology right? Wrong. In this article we explain how you can choose the right tech stack.
Why does your tech stack matter
A tech stack consists of components, because you don't want to start building with 0's and 1's. Examples of components are coding languages, databases, mailing platforms, etc. You choose components to reduce development time on your own unique product. You want to bring it to the market sooner and bring in new business features faster. Especially when you are developing a new product time is what you rarely have in abundance.
A tech stack is not just irrelevant underlying technology. It has a major impact on the flexibility and scalability of your business.
"In general you want to build less and validate more"
Not a good idea: ask your developers
You can ask your developers what would make them happy. They might tell you about the latest exciting language or framework. Here is the problem:
- The latest technology has not been tested extensively. This means that there are many bugs. Bugs are not a problem, as long as you (or the internet) know about them. But new technology comes with many unknown bugs. Those are dangerous because they might be hard to find and could cost you a lot of time. Time you cannot spend on adding business features.
- Adding new technology to the current tech stack could be a good investment and benefit the business goals, but many times, it also adds complexity. Complexity comes with a big long-term impact; it encourages bugs to slip in, make those bugs harder to find and will make it harder to add new people to your team(s) fast.
Of course we are generalizing here. In fact many developers do consider the long term business impact and will give you good advice.
A great reference is the blog post "Choose Boring Technology" from Dan McKinlley (). He explains here the grim paradox for developers "this law of software is that you should probably be using the tool that you hate the most. You hate it because you know the most about it."
So how to make a wise decision
In order to make a good decision, you need to look at the whole picture. These are some important factors you need to consider:
- Product characteristics: What is your unique selling point for the market. Do you have a good reason to build your own software, or can you (partly) use off the shelf products. In general you want to build less and validate more.
- Complexity: Will adding a component to your tech stack make your system harder to maintain, or will it make it easier? As discussed above complexity comes with a long-term penalty.
- Product maturity: is your business already validated by the market? If your product is mature you might think about changing flexibility for speed (scalability). Here you might start splitting up your product into microservices. If your product has not reached that maturity we would advise you to adopt a flexible software architecture that you can refactor fast.
- Vendor lock-in: It’s cool to use tools from a specific vendor (think AWS DynamoDB, or Google spanner) but this would lock you to that specific vendor. If you ever wanted to change vendors this could take up alot of time.
- Legacy systems (or regulations): You might have to connect with an old system with a SOAP connection. Or there might be regulations in place for handling personal data in the cloud or using certain vendors. These are imitations you need to cope with while choosing your tech stack.
- Budget: if your budget is tight, the options are limited… but this makes it easier to choose!
We are here to help
You might have noticed already: choosing your tech stack is not simple. New technology can be great, but often simple and boring technology is the better choice. There is not one perfect solution. Luckily, we have a lot of experience and can give you professional advice. Feel free to contact us and pick our brains!