📜 ⬆️ ⬇️

Native or hybrid? Yandex specialists answer the main question of mobile development

It remains literally four days before the moment when we finish accepting applications for participation in the second “mobilization” of Yandex. She will once again unite four summer schools for beginning specialists: the School of Management , the School of Mobile Design , the School of Interface Development, and the School of Mobile Development for Android .



Not only Yandex employees who make applications for millions of users, but also invited specialists will share their experience and knowledge with the participants. We will not do only by theory. There will be a lot of practice and team work on real products. As always, tuition is free, and Yandex will pay for travel and accommodation for all nonresident students. If you have not submitted a request, there is a little time to do it. Classes will start on July 3 and will end on September 23 - the day of the twentieth anniversary of Yandex.
')
In mobile development, one of the hottest debates is around native and hybrid development. We decided to give three teachers of "Mobilization" to speculate on this topic. It turned out a small interview, which can be interesting both for beginners in the development, and for those who have already decided on their choice.

Yuri Podorozhny . Head of Mobile Geographic Information Services Development, Yandex. Works on Yandex.Maps and Yandex.Metro. Engaged in mobile development for more than eight years. The founder of the studio Any Void, which in 2014 became part of Yandex.


Sergey veged Berezhnoy . Head of the development of search interfaces in Yandex since 2005. I managed to work on Search, Mail, Blog Search, Ya.ru, Pictures, Videos. In addition, actively engaged in the development of internal tools for creating websites.



Lola Kristallinskaya . The head of the design department, has worked at Yandex since 2008, is responsible for hiring, managing and developing designers, communication and educational programs of the department and the entire design ecosystem in the company. A team of designers and researchers from Yandex design began with Lola. Prior to joining the company, she headed the website creation department at Art. Lebedev Studio.



Lola Kristallinskaya:
Let's first give a definition of what native and hybrid development is and what is the difference between them?

Yuri Podorozhny:
In 2007, the iPhone appeared, in 2008, Apple gave the opportunity to make applications for it, which became the starting point of native development. This is a compiled programming language with a development environment limited to a single mobile platform. Objective-C and Swift for iOS, Java - for Android. Applications are created in one of these "native" languages ​​according to the laws of a particular platform.

Lola:
In terms of programming, was this something revolutionary new?

Yuri:
Of course not. The term “native” itself arose simply in contrast to the hybrid approach.

Sergey Berezhnoy:
By hybrid development, we mean a way to write applications when it is fully or partially rendered and works using web technologies. That is, inside is used something implemented with the help of HTML, CSS, JavaScript.

Yuri:
In fact, a clean web application is not done now. Web view still needs to be put inside an iOS or Android application, that is, in any case, you need a container that is written using Java, Swift or Objective-C. So, there will still be some percentage of the native code. Net web applications were probably only the first year of the iPhone, when it was still impossible to create them from the outside. And Apple then promoted the theme for developers to create web applications. By the way, this function is still there. You go into Safari, click on the “home” screen, an icon is added to the desktop, in fact, this is a clean web application. Only, of course, you cannot distribute it through the Store.

Sergei:
Now there are a number of frameworks, platforms like PhoneGap / Cordova, in which, conditionally speaking, this code fragment has already been written. You simply take them as a basis and develop them, combining them with web elements at your discretion.

Yuri:
The hybrid approach probably arose from a natural desire to save time and resources when mobile development began to gain momentum. For example, there is a certain young OS, there is a whole range of technologies that came from the web, and many are tempted to not use them. But honestly, I don’t know why. In my opinion, no normal application can be made using web technologies.

A hybrid for simple tasks, a native - for complex


Lola:
In this case, is the problem of choice relevant at all? For example, I am a manager, I have a product and I need to make a mobile version. How to decide which is better for me - hybrid development or native?

Sergei:
It is necessary to proceed from the task, the necessary means of expression for its implementation and the available resources. If you are asked to play music in life, and you only have colors, it will be hard. If you need to process video from the camera in real time, make 3D-animation and similar complex things, then you cannot do without nuclear technologies of the native platform. Conversely, if your application uses a simple black and white pencil as expressive means, then web technologies can save time and money.

Yuri:
I agree, it all depends on the task. But, in my opinion, the web is relevant only in a few cases. For example, if this is a completely new product and it is not yet clear whether the market will accept it, whether it is needed by someone or not, then the task is to test a certain hypothesis. Or if it is just a display of content in a small amount and it is not intended to actively interact with the interface, transitions between screens and sections. For example, the application Meduza. Go to the news screen, this is just a web view. They have a simple layout, exactly the same as for the web, they don’t even need to prepare content, in the mobile version everything is immediately displayed.



Sergei:
According to the task sites can be completely different. Remember, at one time there was a choice between doing flash sites or HTML sites. And everyone said, if you want, the text drawn in a circle, the video inside and that everything was beautiful, then you need to do only flash. So it is here.

Yuri:
There are, of course, successful examples of hybrid applications. For example, an interesting model for Basecamp: part of the navigation is implemented natively, so that the transitions are carried out quickly and smoothly, and the content is displayed in the task list in HTML, so that they have the same templates for the touch and mobile versions. But we have always had a native approach to Yandex.Maps, because making an application with maps that will be productive and convenient using web technologies is simply impossible. The only place where we use the web is the withdrawal of the license agreement.

Bound by guides


Lola:
Ideally, everything, of course, must come from the meaning, from what and why you need it, what product and what is important to it. But we live in the real world, where not everyone and not always, in principle, have a choice. Someone does not have enough money to hire a whole team of developers, so you have to be inventive. What other factors play a role when choosing a technology?

Sergei:
If I had an infinite amount of money, I would hire three developers who would make good native versions for all platforms. But I'm too greedy to allow myself such a waste. The hybrid approach allows you to save: make one option and use it everywhere. But if in the future the task becomes more complicated, and it becomes necessary, for example, to overlay pictures on real-time video, you will still have to spend money on three developers.

In addition, the question arises whether you want to draw a different design for each application three times. After all, the operating system guidelines are very different from each other, and like a swan, cancer and pike move in different directions in small things. If you carefully read the guides of Windows Phone, Android and iOS, you will need to think carefully about how your user task will be optimally solved on each of the platforms.

Lola:
If the application is not done on guides, then check in the Store does not pass?

Yuri:
Of course it is possible. Not all applications, past checks at Apple, correspond to design guidelines. No one really enforces these rules.

Sergei:
But we are talking about applications A + and AAA-class, the major league. If such do, then the question of the native design for each platform will certainly arise.

Lola:
And the overall design is not possible in native development: if you just have your own buttons and controls?

Sergei:
It depends on which camp you belong to. Some people think that the application should be inside the platform. Alternative point of view - every brand should look the same on all platforms. If you look at Instagram or Facebook, these are just examples of the brand’s struggle for self-identification in relation to platforms. They specifically design their applications so that they look special and the same everywhere.



How do applications in Yandex


Lola:
For many, the fact that Facebook became disillusioned with web technologies and switched to native development proved the superiority of the latter. How justified is this?

Sergei:
This is just a story about the fact that it's good to be Facebook, when you can hire as many programmers as you like to make the product separate for all platforms. By the way, in response to such a move, some guys, in order to promote their studio, made up a web-based application on web technologies without all the flaws due to which Facebook changed their approach. That is, everything is not so simple. Maybe your web application slows down not because the web technologies are bad, but because your programmer did not do everything he could.

Yuri:
Facebook in the first version had a completely native application, then they switched to HTML, lived for a couple of years with two asterisks in the Store, because the product really slowed down, they all scolded, eventually returned to the native. Here is a vivid illustration of how you want to make a good interface on web technologies out of good intentions, but in the end, you still run into low productivity or lack of funds for development.

Lola:
But the Yandex search application, for example, is made hybrid. Why, if so many flaws in web technologies?

Sergei:
Our services mainly solve information problems, so interfaces can be simpler than in the case of entertainment gaming products. So we do not strongly rest on performance. And the expressive means of web-based technologies with skillful use are not so scarce. In addition, the flexibility of the hybrid approach makes it possible not to completely rewrite any work done previously on the web, which we have quite a lot of, and their reworking would require a lot of effort. And so we save time and money.

But our designers have a hard time - they need to create interfaces that will be perceived by users as a “common Yandex interface” regardless of the platform.

Yuri:
In addition to the UI, there is another issue of user convenience. And each platform has its own UX. Users expect a good app to be comfortable and to follow their habits.

Lola:
How do you solve the problem of balance between user convenience and brand unity in your products?

Yuri:
Two years ago, this problem in Yandex was more pronounced. All applications are very different in style. As a result, we developed our interface guides common to all, choosing the most successful patterns from all mobile guidelines, and sometimes inventing our own best ones. But the process of introducing new rules is very long, with a huge number of pitfalls and not yet fully completed.

Sergei:
The main drivers of our experiments with technologies are the optimization of labor costs for development and the desire to provide users with a high-quality product. Initially, we did our search application natively, but faced, for example, with such a problem as the synchronization of teams and releases. Even if initially you decided to spend money on different developers for three different platforms, then in the future you run the risk of facing a management problem. How to make the new UI, new features on these platforms everywhere updated at one time, and so that they have a truly synchronous understanding of this interface?

As practice shows, in large companies, all of this turns into different clans of developers: some make a mobile version of the application, others make a touch version of the site, others make a desktop version, someone creates an Android application, and someone creates a Windows Phone application. And you need a level 80 manager to synchronize all these five teams with each other. And the approach of a single code, therefore, a single team, helps to get rid of this confusion.

Yuri:
In my opinion, this is not a problem, but a condition of the problem. For example, when we do some new thing in Yandex.Maps, we first work it out on one platform, and then, having collected all the rakes, we add them to all the others.



What the developer needs to know to start making applications


Lola:
How different is the threshold of entry for the native and hybrid technologies? In general, what kind of base should a programmer have to go into mobile development?

Yuri:
A native application developer should know Objective-C, or SWIFT, or Java, or C ++. But, in my opinion, in what language to write, it is new business, the key here is the basic knowledge of programming. Everyone with whom I made applications in my life were students without a mobile experience, but with a good background. Everything else is comprehended in practice. You will get into a good team of professionals, you will grow much faster.

Sergei:
If a person has experience in developing interfaces using HTML, CSS or JavaScript, then you will have to dive deeper into the specifics of mobile browsers. If we are talking about interfaces, then these are interaction patterns - more with fingers, less with a keyboard. Its specificity within the Runtime JavaScript and CSS for mobile browsers, but the differences in recent times less. As a rule, mobile development is easier than with a wide range of desktop browsers, because, as a relatively new technology, they have a more modern implementation of web standards. But now, as mobile platforms age, the same problems begin to arise as on the desktop, when there are clients with old browsers that some things do not support.

Lola:
Do programmers have a division into mobile and non-mobile? For example, in the design market, this is now an obligatory additional skill. Maybe you really do not deal with mobile interfaces every day, but without a basic knowledge of mobile design it is almost impossible to pass an interview and selection.

Yuri:
Programming has such a huge field of application that a person who develops some server components in C ++ may not know anything at all about mobile development, write, for example, some kind of banking software and feel comfortable.

Sergei:
I agree, it’s not so easy to develop microcontrollers or user interfaces - things are really very different, and jumping from one boat to another. But if we talk about mobile development, then in Yandex we take the people who impose our sites immediately under the desktop and mobile versions. That is, they should understand how our layout, our HTML, CSS and JavaScript will work in desktop browsers, and how mobile, what are the features and nuances. It turns out, as with designers, an additional skill of the front-end developer.

Lola:
And within the mobile sphere, how tough is the division of specialists depending on the platform?

Yuri:
Android and iOS are two completely different stories. If you wish, of course, you can learn to do both. But among those with whom I worked, there was not one who would change the platform.

Sergei:
Each platform is a deep enough ecosystem, and good practical experience is needed for work. But I think an intern with knowledge of android technology and who wants to learn Apple, in the team that deals with iOS applications, we can easily take. The difference is not as big as it is between programming microcontrollers.

Adaptive layout is not a panacea


Lola:
I heard that for the poor, but tricky, there is still such a thing as an adaptive layout, which is immediately for the web and for mobile.

Sergei:
There is a technological opportunity to make the interface on web technologies so that it behaves differently on the desktop and on mobile, and so that it can adapt to them. But, unfortunately, the rubberiness of some products is not infinite, and the variability within which this adaptability can be very limited. The main advantage of such a rubber layout is that you have overlaid one code and use it everywhere.

In Yandex, we do a little differently: there are common pieces that we use everywhere, and there are those that should be different, for different sizes, we write them separately. Thus, we are trying to sit on two chairs: take the reuse of the code, which is in the concept of adaptability, and introduce more subtle adaptability with concrete redefinitions for touch and desktop platforms.



Lola:
Let's summarize, as a manager, designer and developer to take into account all these nuances?

Sergei:
I recommend not being upset by fanatics, and each time consciously making a choice, having as wide a context as possible and taking into account all factors. Not thinking like "If Facebook has switched from a hybrid approach to a native one, it means we need to" or "Once Yandex imposes its output in an application on web technologies, it means that we need to do so." Need to dive into the topic.

Yuri:
And for this you need to at least understand both in that and in the other. To understand how the world works, how it works, because there is no one correct approach. It is quite possible to make a native application in which some interfaces and sections will be made on the web, and thereby simplify your life in some places. It is necessary to analyze each task individually, and only then make a decision. The magic pill does not exist here.

Source: https://habr.com/ru/post/326882/


All Articles