I have done several things, from system programming to systems to large-scale data engineering, compiler design, service frameworks, game development, web programming, and mobile development, and I can tell you that front-end development is no easier, if not more difficult. In the back-end, everything is clean, organized, lying on the shelves and in parallel, it is a paradise compared to the confusion that web programming has become in the last 25 years. And web programming is a trip to Bali compared to mobile development, including iOS.
And Android is the worst. Android developers are heroes. Android programming is wait twenty minutes to see what happens if you change one line of code. And any change with a probability of 80% will not work the first time, since the function compatibility matrix is ??incredibly incomprehensible. Of course, you can use X, and you can use Y, but you can’t use X together with Y.
And compatibility with devices? For my game, Wyvern has some angry reviews on Google Play, as it somehow did not work on LG devices. I bought an LG phone on eBay to test the bug, and found that there are two APIs for getting clicks on the scroll list, but one of these APIs does not work on LG.
Here’s what happened: several competitors invented their Android frameworks. I’m not just talking about libraries for missing features, but about replacing for the whole Android development stack. Microsoft has Xamarin, Adobe has Cordova, Facebook has React Native. See: Framework7, Appcelerator Titanium, Onsen, Sencha, Kendo, XDK, Ionic, Mobile Angular, Unity. What’s happening? Itís as if everyone who was trying to do Android development gave up and decided to create their own startup to make it better.
And Google replied: ìLike this? You cannot compete with us because we are going to compete with ourselves! î- and the company launched Flutter , a serious stack for Android development that competes with native Android, and whose existence the Android team refuses to recognize.
These frameworks make Google vulnerable. Many of them are cross-platform, which means that you can write one application and run it on iOS and Android. Both in a large company and a small one, no one wants to pay for two development teams to write the same application for different platforms. Therefore, there is economic pressure to switch to a cross-platform framework. From the full transition to the cross-platform framework, everyone stops only that they are not yet as good as the native ones.
Some of them (especially React Native ) are very close to this. If one of them manages to take a fairly large market share, then Android will become part of an ecosystem that is no longer under the control of Google.
This does not seem to be a big deal, as Google has control over Google Play, hardware manufacturers, licenses, and so on. But if all mobile developers start using the X framework, then any other hardware vendor or OS can create their own platform (for example, Windows) that will support the X framework directly, and this will completely eliminate Google from the process. And many, if not all, companies would like to do this.
Google decided not to change anything. They double the bet on native Android programming with official support for the Kotlin language, which was a big step for native Android programmers. I like Kotlin – this is the future of Java. But let’s admit: the mobile market is not moving there. People write cross-platform applications for two reasons. First, they want the company’s application to work on two platforms and they do not have to do double work. Secondly, Android programming still has a lot of problems, even with Kotlin, so many companies start from scratch with something more simple.
If you are developing on Android or iOS, you should try React Native to see how easy it is for 30 seconds if you don’t create the game, because then you still have to use Unity.
For business and productivity applications, React Native offers good performance, cross-platform compatibility, incredible tools and improved development speed. Remember that I said that it takes 20 minutes to see a single line change in a regular Android stack? In React Native everything is instant.
This means that you can run functions 10 times faster, which means faster time to market and other benefits. Failure of native programming in favor of fast cross-platform frameworks is a winning strategy. I suspect that Androidís Googleís department doesnít know whether cross-platform frameworks are good or bad for them, but apparently they think itís bad, otherwise they would have invested more power in Flutter.
Now they are focused on making the experience of native programming less terrible. And since it is terrible for large applications like Snapchat or Instagram, they are trying to solve this problem, the biggest of which is build time.
To fix this, Google is working on the ìofficialî Android application build system, which is based on the sophisticated Gradle system, but Google adds a few Android-specific things. It becomes more and more difficult, and sometimes even the engineers themselves do not understand the differences between its parts. What is the difference between build type, product flavor and flavor dimension? They add complexity because they believe that these features are important for large applications and companies. The irony here is that big companies abandon it in favor of Buck, the Android build system from Facebook.
Although Google understands that there is a problem, they put on solutions that no one likes: a native stack with a hugely complicated Gradle build system. And they lose developers, and the market is occupied by third-party platforms.
Android is attacked not only from the development stack. There are other ways that someone can ìstealî Android from Google. One approach is to create a more successful store. Google Play causes a lot of controversy at the level of companies and states, because Android is an open system, but Google Play is 100% controlled by Google. Cyanogen was the first attempt supported by Microsoft and Twitter. Although it failed due to internal disputes within the company, it was the first serious attempt to attack a vulnerable spot – the Play Store.
Who else is trying to make a competing store? You guessed it – Jeff Bezos, because you can’t be the first trillionaire in the world without stealing Android from Google. The Amazon app store is already impressive, and in the race of Amazon and Google, Amazon eventually gets better.
There is a third attack on Android, right in the sore point – in advertising. The Facebook Android application has become so large that it has become a real platform, and now you can offer your advertising in the application directly. For example, The New York Times can buy advertising there, and all the money will go to Facebook.
In China, the same thing we do now WeChat. WeChat has become a thriving platform for creating and deploying other apps and advertisements. This is a whole marketplace inside the application itself. Facebook and WeChat themselves have become advertising channels.
Let’s be honest: the only reason Google created Android is because it is an advertising channel. Google is the largest advertising company in the world, and they are always under threat from other companies that want to attract your attention to their channels instead of Google channels. This is the attack on network neutrality, as providers want to show you the ads themselves.
When you see a company like Facebook, Google, Amazon or Microsoft trying to get into a new business, itís a battle for channels. Google Chrome is a channel for controlling access to the web. XBox is a channel against PlayStation that was a threat to the PC as a channel to go online from home. Youtube, Instagram and WhatsApp are playback channels. Content warfare HBO, Amazon and Netflix also goes for the playback channel. Amazon Echo is a playback channel, and your home is one of the biggest battles for the channel. Even Google Maps is a local advertising channel. Companies want you to watch your favorite content through their channel so that they receive revenue from advertising or subscriptions.
Android is probably the most important Google channel, if not now then in ten years. They can’t lose control of him. Google is under attack from three different sides, and the company is not responding to any of these threats properly.
This may seem a useless speculation, but it affects us in Grab, as we make important decisions about using a stack of technologies for mobile applications, which are channels for our passengers, drivers, agents, and so on.
If there is any risk that Google will lose control over Android, itís best to use a cross-platform framework. And if you are in a tough competition and you need a quick launch, you need something else, not native Android. Android is still chasing Gradle, and it will never be fast, because existing problems are hard to hide.
Among the cross-platform options, React Native seems to be the winner. He likes the web developers who make up the largest audience of developers in the world. It’s hard to compete with this. Grab began to invest in React Native to see if he could keep his promises.
This is a good time to be a mobile developer. If you are a developer who is not engaged in mobile, it is worth considering a change of activities. Experience in backend and mobile development turns you into a full stack developer, an even rarer unicorn.