Choosing technologies, things to consider

Emilio Carrión
5 min readMay 31, 2022

Having to make a decision about the tech stack is a common problem that all the development teams have to affront at some point. Doubts will arise about what library, tool or programming language we should use to make the new big thing. In this fable, I will give you some of the reasonings I do when facing these decisions and common things to take into account.

The Pokemon Company, unknown image attribution

It should match the business needs 💡

The first thing to take into account is a big one. The technology choice you are making should match what the business expects. You are making a technology decision to solve some problem, to give a solution to a concrete business gap. When choosing, you have to be sure you understand what we are making the decision for, what are the requirements, and what we expect from it.

An example I always give to illustrate this topic is the choice of database technology for data analytics. What should we use? A relational database? A NoSQL one? A graph database? Well, it depends on what type of data analysis we want to get from it! You should know and understand what the purpose is and what kind of conclusions we want to extract from that data.

If your analysis focus on aggregations then a columnar database will do a better job. If you need to access different fields of each object in big processing batches, a relational database should be the choice. If you want to make conclusions from the relationships between objects, then a graph database sounds like the right decision. The business needs should guide the technology choice, not the other way around.

Social learning, use what your friends use 👫

Another important point when taking tech stack decisions is who you will be able to learn from. This is usually proxied through the technology’s community but can be expressed in terms of its support around you.

A good rule of thumb that I like to give as advice is that you should use what your friends use. There is no better support. If you use what the people around you are using then any doubt, problem and block can easily be solved just by turning around and asking your friend.

Social learning is a powerful thing, we humans are collaborative by nature and it makes wonders in productivity if you know how to take advantage of it.

Hiring ⛑

Hiring is important, do not let anyone trick you to think the opposite. Any project, even any of your side-fun-pet projects can turn into something bigger in the future. And in that future, you will face a really big problem: finding people to help you grow it to something else.

That said, if you choose a technology or language or framework that nobody uses (or nobody uses at least yet) you must be very sure that the advantages you are getting for that choice are bigger than the headaches future hire searches can give you. Bet for the widespread, believe me, you will make the incredibly difficult work of recruiters much easier.

Inertia is a powerful force 🐉

This topic is closely related to the previous one. In this industry, inertia is a powerful force. Established ancient forces that reign over the kingdom and rule with an iron fist. Technologies that are so rooted in enterprises that they are really difficult to avoid using in one project or another.

For these cases my advice is simple: accept your fate and kneel before them… for now. But look closely at the trends, the hidden heroes, the ones that do not fear to take down the giants. Secretly give them your support and force. In the future, they will be the ones ruling all under the sun.

Vendors and platform 🤖

This is another headache. Yes, if you want to develop native iOS apps you have only one choice and a shot in the foot. I mean, you can choose between Swift and Objective-C and that’s it. For anything else, you will have to go hybrid.

The platform you pretend to develop for is not key when choosing technology but it is usually a set of restrictions that narrow the number of your choices.

Updates and maintanibility 🌀

A software being updated is happy software. Lack of evolution support for projects, languages and libraries is their doom. They can be heavily used in the industry, and they may be really useful, but if they are not being updated to the latest systems, language versions and needs, they are destined to fall.

The worst thing you can see in a code repository of an open-source project is something along the lines of last updated 5 years ago or not maintained anymore.

So be careful when choosing this kind of technology, they can break anytime and no one is going to fix them.

Conclusions 📑

These are some of the things I take into account when choosing technologies and when I try to prevent future headaches. I hope this inspires some of you and help you when facing these hard decisions.

There is one more thing that I didn't mention and it is that I like to break some of those principles for fun 😄. Trying new technologies is really amazing and sometimes you find real gold, so although it may contradict some of the reasons given in this article, my last advice is to be flexible and experience new things whenever you have the time. This is really important.

And finally, to conclude, here comes the moral of this fable (a TL;DR):

Choose what your business needs and try first what your friends are happily using. Take into account the difficult work of your recruiters. Follow established trends but often bet for the new. Also, be clear about the restrictions of your platform and seek the maintained and the updated. And finally, but not least important, have fun!

Final words 🎵

Hey! I hope that some of this tips help you and your peers choose better technologies.

I wish you a great day! If you liked this content you can find more of it here.

Also you can follow me on LinkedIn or Twitter for more thoughts and derailed tales 😄

--

--