The first part of the article is about how alternative development tools for Android can 'take' the OS out of the influence and control of Google …
Original material
Today I will not write about how I left Google, how the community reacted to my material about the reasons for this decision. Today I will talk a little about Android and my own opinion of it from the perspective of an outsider and an amateur developer under Android and iOS.
I am thinking about Android because of the need to recruit developers for mobile devices – quite a simple and straightforward task, as you might think. But it turns out that such specialists are in the highest demand in the market today. And finding them is like catching unicorns.
Why does everyone need mobile developers? Because the 'web' is slowly dying. I have – although I probably already had – friends in almost every division of Google. They often showed me their sad diagrams, and no matter how you looked at them, it became clear that the popularity of the traditional 'web' is constantly declining as the world moves to mobile platforms. Needless to say, you probably remember the transition period Facebook from a focus on the web platform to a preference for mobile devices. Facebook almost hit the box. Of course, not overnight, but the company went through an existential crisis and realized that either the company would take a course towards mobile applications, or it would accept the inevitable end. They did it, but it was incredibly difficult. It's all about the maximum abomination of the structural hierarchy of the developer base under Android.
Unpleasant 'cuisine'
Most of the people at Google are too arrogant to do web or mobile development. “ I'm not a front-end (front-end developer), '' they proclaim with utmost arrogance. At the peak of arrogance sits arrogant C ++ developers for Search, which is considered cooler than Java, which is considered cooler than Python, which is considered cooler. than Javascript. And Search is cooler than Ads, which is cooler than Apps, which is cooler than Tools, which is cooler than Frontends. Etc. Programmers love to look down on each other. And if you are unlucky enough to work on developing Google mobile products, then you will find yourself at the very base of several 'totem poles', where everyone else will watch you with contempt.
Having gone through all this splendor in due time – from systems programming to large-scale data engineering, compiler design, Services Framework, game development, mobile and web products – I can assure you that the front-end is nothing simpler, maybe even more complicated. Everything about the development of the back-end of the product looks nice, neat, organized, dispersed and parallelizable. This is heaven compared to the crazy mess in web programming after 25 years of its existence. But even web programming is comparable to a pleasant trip to Bali, in contrast to programming for mobile platforms, including iOS.
A Android? Well yes. Nothing more disgusting to think of. Developers under Android are heroes. Programming a huge application (Google Maps, Facebook, Snapchat) under Android is beyond words, you wouldn't believe me if I even tried. Here you sit and wait 20 minutes to see what happens after you change one line of code. And every change you make, no matter how small, has an 80% chance of not working the first time. The reason for this is the strange paucity of interoperability data. You can use both X and Y, but you won't be able to use X with Y, because walk in the forest, buddy.
And don't even dare to stutter about device compatibility. My game's page in the Google Play Store has a bunch of angry 1 ratings that appeared there simply because the app, for some reason I don't understand, refuses to work on devices LG. So I had to go to eBay, buy the hapless device from LG for $ 60 to reproduce the bug, and find that, hey, there are two APIs for Android to display mouse events on scrollable list, but one of these APIs doesn't work on LG. Are you serious, maybe that's enough?
And this is what happened: a number of competitors, large and not so big, rolled out their alternative to the development environment Android. I'm not talking about helper libraries for missing functionality, although there are many. No, I'm talking about full fledged alternatives for the development toolkit for Android from Google. Microsoft has Xamarin, Adobe has Cordova, Facebook has React Native, you can go crazy. See for yourself: Framework7, Appcelerator Titanium, Onsen, Sencha, Kendo, XDK, Ionic, Mobile Angular, Unity, seriously, what the hell is going on?
It's like everyone who tried to program for Android gave up and said, 'This is so awful that I'm going to create my own startup that fixes everything.' And Google, in order not to be beaten by competitors, replied: 'Oh so? You will not be able to compete with us, because we will compete with ourselves! ' – and launched Flutter, which is (I'm not inventing anything) a 100% standalone development kit for Android and rivals the default. The official development team under Android refuses to acknowledge its existence. We live in interesting times, however.
Attack on Android
All of these tools make Google vulnerable. Most of them are available for different platforms, which means you can write one application that will work on both iOS and Android. It doesn't matter who you are – a large company or a small store, nobody wants to pay two development teams for an identical application for different platforms. And so there is a huge economic motivation for migrating to cross-platform solutions. The only obstacle to this massive migration is that these tools do not yet reach the quality of 'native' development.
But some of them come very close, especially Facebook React Native. And if one of them can grab a large enough market share, then Android, in fact, will become a conduit for the developer ecosystem, which is no longer under Google's control.
This might seem like a little bit of a big deal since Google still has a Play Store, OEM partners, licensing, and so on. For most users, their superior position looks comfortable. But it is worth considering this: if all developers for mobile platforms began to use a certain cross-platform tool X, then almost any manufacturer of hardware or software could enter the market with competing hardware or software (such as Windows) with direct support for X and faster performance and launching of applications, thereby excluding Google from this chain. And trust me, many companies are hungry for it. Sorry, not many, EVERYTHING. Who would be against it?
Google's reaction to this situation was to follow its own strategy even more closely. The company has doubled the emphasis on native (traditional) programming under Android with official support for the Kotlin language, which is a breakthrough for those using the native developer kit. I love Kotlin, the future of Java is behind it. But we have to admit: the mobile platform market is not moving in its direction. People 'write' cross-platform applications for two main reasons:
- They want their company's application to run on two platforms without having to double the scale of the work.
- Native programming for Android still requires a lot of effort, even with Kotlin, many companies rightly feel they need to throw everything away and start over from scratch, moving to a simpler solution.
If you are a developer under Android or iOS and can take the time to learn React Native, which was created Facebook specifically to solve these problems, then thirty seconds is enough to see how much better it is. Of course, we assume that you are not 'writing' the game, in which case you still have to use Unity. For business applications and office utilities, React Native offers decent performance, cross-platform compatibility, great tools, and dramatically increased development speed. Remember how I talked about waiting twenty minutes to see the impact of a single line of code change in the native development kit under Android? This can happen in the largest applications like Nest or Facebook, but even for medium-sized applications it will take 2-3 minutes, while in React Native everything happens instantly. We made changes and saw the result.
And that, folks, means being able to launch new 'chips' ten times faster, which gives you faster time to market, first move advantage and solid winnings. Ditching native programming in favor of fast, cross-platform tools is a winning strategy.
By Steve Egg
It is worth to pay tribute to the developers under Android, judging by the description of the 'amateur developer', they are not at all sweet. Newer, more modern, and faster alternative development tools threaten to put Google in a catch-up position, and there are plenty of 'good corporations' willing to daddy. Mountain View still believes in the correctness of their path, keeping Flutter ready just in case, but not admitting it. Will Google tolerate unfavorable developments? Who is ready to claim the 'throne'? About this – in continuation of this issue in a week.