To learn more about the approach, I am interviewing Valentyn Poliskyi.
About five years ago, I developed my first website for a local print house. Then, I switched to freelance for a while and tried myself in a couple of outsourcing and outstaffing IT companies.
Now I'm growing professionally as a full-stack developer in one of the distributed teams at Daxx.
Node.js is commonly used for server-side development. It has a software platform under the hood, based on a V8 engine that converts JS code to machine code and uses a libuv library for input/output operations (reading/writing files).
All of these tools work differently. The good thing is that a user won't see any difference between a mobile application written with these technologies and the one written with a "native" programming language.
My preferable stack is the following:
The main reason why I chose these technologies is a vast and robust community that applies these technologies. Based on this, there are many ready-made solutions and practices for solving different kinds of tasks. Especially in the most popular ones, the main issues have been solved already or are being resolved.
If you're understaffed at some stage of the development, any team member will be able to take on an urgent task. This way your front-end team doesn't have to wait for the back-end team to deliver the change as both ends use similar technology.
Usually, if you need to develop a working system within a short time that solves a task of low or medium complexity, you should go with cross-platform applications. And if speed is the main requirement for the system, you should choose faster tools for a specific platform.
I considered different technologies for server-side development and chose Node.js. The main reason for this was specific time frames and a team with strong expertise in this technology. The technical requirements on the project matched the capabilities of the Node.js platform as well.
In a while, we had to develop a mobile application for the client. I chose to use React Native this time. The platform's capabilities did not limit the technical requirements, so we managed to build an up-and-running application for Android and iOS in a short time.
No doubt, user devices are getting more powerful day by day. We'll see computing and business logic transferring over to the client level as much as possible. On the server-side, we'll transition to distributed microservices and cloud computing.
The best advice I can give is to consider all possible options when solving different tasks and not limit your expertise to one specific domain. It will allow you to choose the optimal solution, considering the particular nature of various tools.