Developing multi-platform applications is difficult. Thankfully the advent of JavaScript has made it a possibility for an increasing amount of developers.
To learn more about the approach, I am interviewing Valentyn Poliskyi.
My name is Valentyn Poliskyi, and I'm a full-stack JavaScript developer. Throughout my career, I've been developing different types of applications, including front-end web development, REST, and mobile.
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.
JavaScript is the primary tool for client-side development as there are no other alternatives for this type of applications (including HTML and CSS as related technologies). React, Angular, Vue are highly popular front-end frameworks.
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).
If you're using JavaScript for developing mobile applications, you can choose one of several solutions — React Native, Ionic, PWA, or Cordova.
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.
Software development is primarily teamwork rather than working with technologies. If you're programming several or all parts of the JavaScript system, it hugely simplifies team communication and task distribution.
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.
In the case of correctly constructed components, they can be applied in several applications at once. For example, it could be the logic for processing entities passed between applications. If developers are well aware of JavaScript vulnerabilities and peculiarities, they can easily prevent potential errors, improve performance, and strengthen weak areas.
In the process of development, programmers may face the limitations of a particular tool using JavaScript since the language was initially used only for front-end development. In this case, the best solution would be to identify such problems and develop solutions during the system designing stage.
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 decided to choose JavaScript as I knew there were many available projects and a low threshold for entering this technology. Later on, I was assigned to develop new modules, which was one of my project requirements.
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.
JavaScript is developing as a language and ECMAScript standard updates are released annually. Trends for the tools used on different platforms, based on JavaScript, go hand in hand with the directions for the "native" technologies for these platforms.
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.
JavaScript is the right choice at an early stage as it forgives mistakes and doesn't make you choose between approaches and a stack when solving tasks. As I mentioned before, there's a large number of different frameworks for front-end development.
JavaScript is a universal problem-solving tool that is easy enough to learn. It is a perfect choice for beginners! However, a developer should be skillful enough to avoid pitfalls.
A significant advantage of JavaScript is many libraries for platforms and a large community of programmers who support existing open-source libraries and develop new ones.
If you're looking for a tool to develop a multi-platform application and technical requirements don't restrict the "native" tools usage, JavaScript is an excellent choice.
Thanks for the interview Valentyn. It has been interesting to observe the impact of JavaScript on the way we develop applications over years and it seems it's becoming a better option year by year.