I believe that the ability to select the right technology is one of the most important skills for an experienced developer to master.
Not only it requires a deep understanding of the current business system and its problem but also demands extensive knowledge of various available technologies.
This complex task is typically handled by advanced engineers.
Usually, technology selection is not as simple as choosing between several options and recommending the best one.
Instead, each technology has its specific use case and the selection process should focus on solving a particular problem.
By the way, never introduce a new technology to your system just to catch up with the latest trend.
The newest technology may not be the best fit and it could potentially increase system complexity and instability.
Let’s get down to business, how to make a technology selection?
Assuming that there is a surge in traffic every day from 9 pm to 10 pm, which causes a rapid increase in response time and negatively impacts user experience, how to optimize this issue using the most suitable technologies available?
Firstly, you have to find the bottleneck of your system, and figure out which part is the most time-consuming.
This is where your experience and familiarity with the system come in handy.
You may find that there is a heavy task costs a lot of time so you decide to make it execute asynchronously using a message queue.
Or maybe you find that there are many duplicated real-time computing tasks in the system that could be cached for a while to skip redundant computing and reduce the response time.
Whatever your decision is, a new technology, message queue or cache, or something else, has to be introduced to help you solve the problem.
Here comes the question: if you don’t know what technologies are available, how to choose a suitable one?
There are four sources listed below that you can use to know what technologies are available, ordered by descending priority:
- Your team: If your teammate handled a similar problem and introduced a technology, it’s recommended to choose the one he had chosen.
- Your company: If you are part of a big company with a platform infrastructure team, your colleagues may have already developed the component you want.
- Your knowledge and experience: If you have experience with a technology, or regularly read tech blogs and news sites to keep up with the latest trends in the tech industry and stay informed about new technologies, it’s time all your accumulation pays off.
- Search engines: Google is an excellent assistant to help you discover new technologies.
If you can’t find a suitable solution within your team or your company, you can consider introducing a new technology to your system.
It’s crucial to conduct a thorough investigation of its features and limitations before introducing it, and at the same time, you should compare other possibilities from several aspects which I will illustrate in the next article.