Before you start creating a mobile application, you should think about choosing a technical approach to the process: will the development be native or cross-platform?
As a short educational program, we explain: by native development, experts mean the use of original programming languages and mobile OS tools. With cross-platform development, specialized tools are taken into service with which you can create applications that work on several mobile operating systems at once.
Both approaches require certain sets of tools that are most suitable for writing code, designing the interface, debugging, monitoring all processes, and building the final version of the application.
And both of these approaches have their advantages and disadvantages for both users and developers. HandsApp specialists help beginner programmers to understand all the pros/cons of native and cross-platform development.
Mikhail Ovchinnikov, (Technical Director of Hands App mobile development studio)
The wonderful English programmer Joel Spolsky in his mega-popular blog “Joel on Software” (Joel on Software) somehow deduced the “law of leaky abstractions”. Its essence is as follows: theoretically, abstractions should isolate us from a lower level, but in some cases they are still so complex that you need to delve into the implementation features at a lower level.
This principle also applies to cross-platform frameworks. Usually they abstract developers from the peculiarities of writing code for a separate platform. However, as soon as the question concerns performance or the implementation of specific functionality for the platform, the time saved during development is eaten up by solving these problems.
Of course, there are areas where the use of cross-platform technologies is fully justified. First of all, game development: for example, the Unity engine is a good option for most developers. Many marketers with only basic knowledge of HTML/CSS/JS successfully use Ionic to test their hypotheses without involving the development department. Many startups choose Flutter in order to quickly make a minimum viable version of the product (MVP), thereby proving the competitiveness of their offspring in practice.
We should not forget that approaches to application development can be combined. For example, work out performance-critical screens (news feed on a social network) on native technologies, and secondary ones (profile screen, settings screen) on cross-platform ones.
If you look from the point of view of a programmer’s career start, then betting on cross-platform development is quite risky: large companies still have few vacancies of this kind, and this situation is unlikely to change much in the future. Large companies already have huge code bases written on native technologies that need to be supported by someone. Therefore, if you have a dream – to work in one of the IT giants – then it is better to choose the platform that you like best and do its in-depth study.
Nikita Krasavin, …(lead iOS developer at Hands App mobile development studio)
Let’s first take a look at the details: what is native development, what is cross-platform, and how do they differ.
Native development is the process of implementing a mobile application using official tools provided by the developers of the system for which the application is written. It is aimed at one particular mobile system. For example, Apple provides the Xcode IDE for native iOS app development. And you can’t write an Android app using XCode. Everything is very simple: one code – one system.
Cross-platform development is a way to create an application with the ability to adapt to multiple systems. By analogy: one code – many systems.
Despite the fact that cross-platform tools can save a lot of time, native development among programmers is more popular. For several reasons, let’s look at the main ones.
1. iOS and Android mobile systems have significant differences that cause difficulties in cross-platform development. This applies primarily to interface elements. That is why writing one universal code is sometimes much more difficult than doing it natively.
2. Native environments are maximally optimized to work with your system. Cross-platform tools, on the other hand, have to proxy calls to system methods. As a result, performance indicators fall, and therefore cross-platform applications crash more often, think longer and slow down.
3. Maintaining cross-platform code is much more difficult than native code. Updating systems leads to frequent updating of APIs, which requires more programmer time (compared to the work of updating native application code).
4. When developing a native application, a programmer almost always finds an answer to his question on the code from colleagues or uses third-party libraries for a specific task. In the cross-platform world, the community is smaller: often you have to solve the problem yourself. Actually, this item refers to the sphere of popularization of native development: the more supporters, the more community. This means that work on a specific task is simplified.
Thus, the speed advantage of cross-platform development is offset by a number of other negative factors.
To summarize: cross-platform is useful when writing a simple application that has few screens and many common elements for different platforms. The ideal task for cross-platform is the development of a mobile game.
For applications with unique interfaces and complex business logic, native development is more suitable.
It is definitely better for novice programmers to start with native development, if only because a large community will always help you navigate the problem that has arisen and give you a tip on the information that will help in each specific case.