Picking the right technology stack can be challenging. As engineers, we are inherently biased towards certain technologies, languages, and frameworks. That bias stems from our past experiences and things we have grown comfortable with.
Nevertheless, this decision can be a critical one and can sometimes make or break your product development plans. Here are a few non-technical aspects to consider when picking your technology stack.
- Is this stack popular among recent similar successful products? You can find out the technology stack of similar products that have recently been built using various sources such as Reddit, Quora, Builtwith, Job ads, etc., and take an inventory of what is popular today.
- What technology will make it easier to find relevant talent? Look at job boards. Check reports by StackOverflow on technology trends amongst developers. That should give you some insight into the availability of developers. Narrow it down to the kind of products that you are building, since technology can vary a lot with domains and application types.
- Any new product development will be completely rewritten twice. This statement might seem controversial, but I have seen it time and again. Does your architecture allow for rapidly changing code along with a rapidly changing team?
- Are you trying to do things the Google way? Facebook may never have existed had they tried to build that platform in C++, to begin with. PHP allowed them to rapidly build the product and grow the customer base to an extent where they have enough resources to be building their own technologies.
- Do you want to be on the cutting edge for the sake of being on the cutting edge? You don’t need Kubernetes for a 3-tier application. Your web application doesn’t need to be written in Rust and compiled to web assembly. Going out of your way to improving the performance of a horizontally scalable layer helps little with your business goals.
Reasoning and debating about technology is hard. Since the context is always unique and almost invisible. But thinking along these lines might help. In the end, technology is a tool. Its choice is a means towards an end and not an end in itself.