谁会从 Google 手里偷走 Android

声明:这些仅是我的个人观点。许多内容可能是错误的。我并不是为我的雇主说话( Grab 公司)。我对所有内容持保留意见。事实上,我甚至都没回过头读它。

我又一次在乘坐去往雅加达的飞机上写下一篇 Medium 博文。这将会成为一种习惯。

我仍然不是十分清楚为什么我的那篇《我为什么离开 Google 》的博文会得到如此多的关注。我仅仅是说:“我是某个随机的跳槽者,等等”, 差不多就这样。不知道怎么地它就被翻译成了好像 80 多种语言,那天(热度)仅被 Natalie Portman 的性专栏所超越 —— 这是相当有趣的事情。

所以我想那是新闻不多的一周?又或者是因为 Medium 拥有了大量的用户? 它是一个很好的平台。回想我写博客的那段日子,我曾经希望 Google 创建一个类似的创新产品……但是,你知道的(并没有)。

无论如何,我的博文得到了非常有趣的回应。一个巴基斯坦的网友说如果在镇上遇见会请我喝啤酒。伦敦的一个人要给我 1000 美元让我和他通话1小时,谈论关于语音搜索或者说一些关于 garbo 之类的东西,我委婉地拒绝了,因为我其实真的不知道什么有趣的事情。一个俄罗斯人甚至在一次聚会跑到我的面前告诉我:“你树立了很多敌人”。多么有趣的时光。

也有一些人对文章的核心内容产生许多误解,他们说:“嘿,这难道不仅仅是专车服务吗?”我曾尝试描绘一张更大的图,但是它已经被传播的太广了,所以我猜想我不能做好它。等有时间我会重新尝试,看我是否能做得更好。

但不是今天。今天我将要讨论一下 Android :仅仅是我作为一个外行和业余爱好的 Android/IOS 开发者的个人观点。正如人们所知道的,好的事情不会连续降落在你的头上,我可以很保证地说这篇博文不会火起来的。只有你我看到。

关注 Android 是因为,我们正尝试招一些移动开发人员。你们认为这将是一个目的明确的任务。但事实证明他们是当今市场上的抢手货。Grab 公司需要他们,其他公司也需要他们,然而他们却没有多少人。这就好比尝试着去猎捕独角兽。

为什么大家都需要移动开发者呢?因为网页开发正逐渐死亡。我有些在 Google 各个团队的朋友——好吧,或许对现在来说是前朋友吧——他们曾经在背地里指责我。但不管他们如何攻击,随着整个世界都倾向移动端,网页会逐步地下降。你也许记得 Facebook 经历过从主导 Web 端向主导移动端的过渡,那差不多是在八九年前的事了吧?Facebook 那时候都差不多完蛋了。我并不是说一夜之间(起死回生),但是当他们意识到自己要么成为一家移动互联网公司或是被遗忘的时候,公司经历了一场潜在的危机。

他们成功了,但那肯定不容易,因为 Android 的开发堆栈是世界上最大的一坨大便三明治。

便便美食

在 Google ,大多数工程师很傲慢而不去做移动或网页开发。他们傲慢地声称“我不做前端”。在那儿有一个现象,我想把它叫做“鄙视的 DAG ”,DAG 的意思是有向非循环图,差不多就是一张流程图。在“鄙视”这座山的顶端是骄傲的编写 C++ 的搜索工程师,做 C++ 的看不起做 Java 的,做 Java 的看不起做 Python 的,做 Python 的看不起做 JS 的。而且做搜索的看不起做先进设计系统的,做先进设计的又看不起做应用的,做应用的看不起做工具的,做工具的看不起做前端的。诸如此类。程序员喜欢互相看不起对方。如果你不幸成为 Google 的移动开发工程师,你将处于食物链底端,大家都在俯视你。

但是从系统程序设计到大规模的数据工程设计,再到编译设计、服务框架、游戏开发、网页开发、移动开发,我都曾亲身做过,我可以向你保证前端开发就算没有比其它的难,但也是相当难的。后端的所有都是美观、整洁、有条理的、分布式的并且可平行化的;比起 25 年网页开发剩余的难吃的残渣简直就是天堂。甚至网页开发相比这块移动开发的大便三明治——包括 iOS ——来说,也像一趟去往巴厘岛的美妙旅行。

那么 Android 呢?是的,它是他们中间最大的大便三明治。能原谅这句俏皮话的 Android 开发者都是英雄。一个大型的应用,比如说 Google 地图、Facebook 或 Snapchat ……,改完一行代码,然后坐在那等 20 分钟去看发生了什么。每一次你做的改变,无论多小,都有 80% 的可能在第一次尝试时不起效果,因为互用性矩阵是异常的稀疏。当然你可以使用 X , 可以使用 Y , 但因为该死的原因你不能同时使用 X 和 Y 。

我这还没有开始说设备兼容性问题呢。在 Google Play 商店,我有一堆愤怒的一星评论,因为我的 Wyvern 游戏时不时地不能在 LG 设备上运行,所以我不得不去 eBay 上买一个劣质的 60 美元的 LG 设备(和一个劣质的 600 美元的 LG 设备没差别)去重现问题,发现在一摞列表中对于获取鼠标点击事件有两个 Android 应用接口,但是其中有一个在 LG 装置上不起作用。

我想说,拜托!(有没有搞错!)

正因如此,许许多多大的和小的竞争者,创造出了他们自己的替代 Android 的框架。我讨论的不仅仅是对于缺失功能的支持库,以及那些已经大量存在的库。我是在讨论对于 Google 整个的 Android 开发堆栈的全方位的替换。微软有 Xamarin,Adobe 有 Cordova,Facebook 有 React Native ,多么疯狂。认真来讲,你去看看,Framework7、Appcelerator Titanium、Onsen、Sencha、Kendo、XDK、Ionic、Mobile Angular、Unity,它们意味着什么?

就好比说是曾经做过 Android 应用开发的人都选择放弃,然后表示:”这真是太糟糕了,我要自己去做一个更好的”。

Google,不甘落后于他们的竞争者,回应说:“噢耶?你无法与我们竞争,因为我们的竞争者是我们自己!”并且他们发布了 Flutter —— 我没参与 —— 一款与原生安卓竞争的 100% 的安卓开发堆栈,可惜真正的安卓团队拒绝承认它的存在。

真是生死攸关的时刻啊。

Android 的对手

这些 dev 框架的出现削弱了 Google 的势力。它们大多是跨平台的,这意味着你编写一个应用之后,它可以同时在 iOS 和 Android 上运行。无论你身处大公司还是小作坊都无所谓,没有人愿意同时支付两个工程团队以在不同平台上编写完全相同的应用。所以迁移到跨平台框架对他们有巨大的经济吸引力。阻止发生大规模迁移的唯一因素是框架不如“原生”开发那样地好。

但其中有几个(特别是 Facebook 的 React Native )已经做得异常接近原生了。如果它们中的其中一个成功占有了足够大的市场份额,那么 Android 基本上就成了一个开发者生态系统的管道,而这个生态系统已经不再受 Google 控制。

这似乎不是什么大不了的事情,因为 Google 仍然拥有 Play Store 、OEM 和授权等等。对于大多数人来说,他们认为 Google 仍然居于统治地位。但思考一下:如果所有的移动开发人员都开始使用特定的跨平台框架 X ,那么从字面上来看任何其他硬件/操作系统制造商或联盟都可以使用他们自己的直接支持框架 X 的硬件/操作系统平台(如 Windows )参与竞争,所有的应用都可以运行(可能在启动时更快),这将完全将 Google 隔离。相信我,很多公司都想这样做。对不起,不是很多,而是全部。谁不想呢?

Google 对这种情况的回应是拒绝让步。他们加倍投入到“原生”的 Android 编程上,并在 Kotlin 语言中提供官方支持,这对原生 Android 程序员来说是一大进步。我爱 Kotlin,这是 Java 的未来。但让我们面对现实吧:这不是移动市场未来的走向。人们编写跨平台框架的原因有两个:首先,他们希望他们公司的应用能够在两个平台上工作,而不需要完成 2 倍的工作量。其次,由于 Android 原生编程仍然非常痛苦,即使在 使用Kotlin 的情况下,许多公司也感觉他们应该扔掉它,并从一个更容易的技术上从头再来。

如果你是一名 Android 或 iOS 程序员,并尝试在 React Native (Facebook 所开发,用于解决这些问题)上花了些时间,30秒内你就会意识到这会是更好的方式。设想你开发的不是游戏,因为游戏这种情况下或许会使用 Unity 。但对于商业和产品类型的 APP ,React Native 有着高性能、跨平台兼容性,有着许多不可思议的工具(最好的是来自微软。你好, 关联性! 欢迎回归!),同时极大的提高了开发速度。还记得我说过 一行代码的变化在常规 Android 栈中可能需要 20 分钟才能看到吗?这在如 Nest、Facebook 之类的大型 APP 中可能会发生,但甚至中型 APP 也需要 2-3 分钟。然而 React Native 的实时性,你能即刻观察到变化。

而且,通俗的说,这意味着运行的特性快 10 倍,也意味着能更快的进入市场,这意味着先发优势,这意味着成功。放弃原生编程,以快速循环的跨平台框架,如 React Native ,是一个成功的策略。

没有证据,我猜测,android.org 中没有明确跨平台对他们而言是好是坏,但他们倾向于“坏”的,不然他们怎么会支持 Flutter,Flutter 是跨平台的。我个人认为这对他们有好处,但我说了不算。

不管怎样,他们现在都集中精力通过让原生体验不那么糟糕以保持优势。因为目前对像 Snapchat 和 Instagram 这样的大型 APP 很糟糕,他们大多时候试图解决这些大型 APP 的开发体验,但最终还是牺牲了编译时间。

为了解决这个问题,Google 在“官方” Android 应用上做了大量的工作,它是基于已经很复杂的 Gradle 系统,但 Google 又在上面堆了一堆 Android 特有的东西。导致变得越来越复杂,甚至连构建工程师都不懂它的每一部分。构建类型、产品特性和特性维度有什么不同?对此祝你好运。但他们一直在处理复杂度,因为他们认为这些功能对于大型应用程序的大商店很重要。

讽刺的是,大多数的大商店都在设法抛弃它,转而去支持 Buck – Facebook 的 Android 构建系统。Google 正在追赶一个垂死的策略。

因此,Google 似乎明白存在问题,他们事倍功半地在做没有人喜欢的解决方案:一个拥有比 Gradle 构建系统更复杂的原生堆栈。他们正在失去开发人员。第三方堆栈正在赢得市场份额。

侧翼攻击

更糟糕的是,开发技术栈并不是 Android 上唯一(来自对手)的攻击。还有一些其他的方法可以从 Google “窃取” Android 。一种方法是创建一个更成功的商店。Google 对 Android 系统控制最大是 Play Store ,它引发了大量争议(在公司和政府的层面上),因为 Android 声称是一个开放的系统,但 Play Store 完全由 Google 控制。在微软和 Twitter 的支持下,Cyanogen 是一场政变式的重大尝试。尽管由于内部的混乱而失败了,但这却是第一次认真尝试对 Play Store 进行“割喉”。

猜猜还有谁正在创造有竞争力的应用商店来大干一场?你猜对了:Jeff Bezos(亚马逊集团董事会主席兼CEO)。亚马逊的应用商店已经做的相当不错了,在我看到的亚马逊和 Google 之间的竞争中,亚马逊的表现也越来越好。(Google)要小心了!

如果这还不够让 Google 担心的话,那还有第三波对 Android 系统的攻击,而且还直戳痛点:广告。Facebook 的 Android app 已经变得非常庞大(已有成百上千的工程师在这上面工作多年),它成长为了一个真正的平台,现在可以让自己的广告直接进入 Facebook 应用,例如《纽约时报》可以购买广告位置,而所有的钱直接从纽约时报到 Facebook ,没有一分钱给到谷歌。可想而知 Google 会有什么感受。

微信在中国也做着同样的事情。微信应用已经成为了一个用于构建和部署其他应用(和广告)的平台。这就像一个完整的市场嵌入了应用本身。Facebook 和微信移动应用已经成为独立的广告渠道。

让我们清楚一点:Google 创造 Android 的真正原因是 Android 是一个广告渠道。谷歌是世界上最大的广告公司,总是受到那些想把你引流到他们自己的渠道的公司的攻击。说到底,那是网络中立法规所导致的。电信和互联网服务提供商希望为你提供所有广告,或至少从 Google 和 facebook 手里消减一些。

无论何时你看到一家像 Facebook、Google、亚马逊或微软这样的公司神秘地进入到一个陌生的新业务,你可以打赌那是个广告渠道。Google Chrome 是一个控制进入网页的广告渠道。微软的 XBox 是一个针对 PlayStation 的广告渠道,PlayStation 威胁 PC 作为在家上网的渠道。YouTube 是一个广告渠道。Instagram 和 WhatsApp 是广告渠道。HBO/Amazon/Netflix 内容之战是一个广告渠道。Amazon Echo 是一个广告渠道。如今,你的家里就是一个最大的渠道战场。甚至 Google 地图也是一个对于本地广告的广告渠道。你若开始观察,你将发现遍地都是广告。

最重要的是,那些公司想要你看到你最喜欢的内容(书籍、电影、游戏、Natalie Portman 性专栏)是通过他们的渠道而不是其他人的,以至于他们可以获得广告收益或订阅收益。

Android 可能是 Google 最重要的一个渠道 —— 如果今天不是,那接下来的十年肯定是。他们不能对它失去控制。但是我们已经看到至少有三种类型的攻击在不同的维度上一起发生着:开发者生态系统( React Native 和它的朋友们),商店应用( Amazon 的应用商店和 Cyanogen 谣传的继承者),和轻量级的应用内市场( Facebook 和微信等等)。Google 目前对于这些威胁的反应是 …… 。好吧,它仍然是领先的。起码现在看来是这样。

与此同时,回到主战场…

所有的这些可能看起来像一堆无用的夸张的猜测(好吧,我的意思是,确实是),但实际上它确实影响到了我们,因为我们必须做出重要决定,该选哪种技术栈用于我们的移动应用程序,这是通向外部世界的窗口—— 即通道 —— 通向我们的乘客、司机、商人、代理等等。

如果你认为 Google 可能会失去对 Android 的控制,那么最好的办法就是使用一个跨平台的框架,因为它可以通过改进的可移植性来保护你的产品。如果你处于激烈竞争的领域,需要更快速的启动,你应该使用其他的东西,而不是 Android 。Android 仍然在追赶 “Gradle” 的列车,而且追赶速度永远不会很快,这在很大程度上是由于 Android 设计的遗留问题,而这些问题很难解决。

在跨平台的选项中,React Native 看起来像是一个赢家。它吸引了许多 web 开发人员,这可能是全世界范围内最大的开发人员。很难与之竞争。Grab 最近开始进行投资 React Native ,以了解它是否能实现它的承诺,到目前为止它看起来还不错。

我们要花很长时间才能把我们的原生 Android 和 iOS 应用退下来,因为这些移植确实需要时间。这意味着,如果你是一名各种口味都尝试过的的移动开发者,那将是一个好消息,因为我们需要你。我们有 React Native 的工作,有 Android 的 Kotlin 工作,以及 iOS 的 Swift 工作,所有这些都在世界范围内都是非常高的需求。如果你的老板不喜欢你,我建议你四处看看。行业在过去的三年里发生了很大的变化。

总结一下这篇博文的主要观点:就像其他公司一样,Grab 公司需要移动开发人员,但是很难雇佣到,因为很明显地除了 Google 之外,大家都知道 Android 开发是很难嚼咽的,所以现在整个生态系统正在滋生出很多竞争者,想要将他们的方法作为开发移动端的真正途径……由于这种四分五裂的局面使得更难招到移动开发人员。

但是如果不考虑你喜欢的口味,这是成为一个移动开发人员的好时候。如果你是一个非移动端的开发人员,你应该考虑一下转到移动开发。在后端开发经验的基础上,再学习移动开发,可以使你成为一个“全栈开发人员”,这样的人更加少有,是更加市场化的独角兽。

如果你对此感兴趣,是时候参与控制 Android 的竞争了。很多公司都是这样的。嘿,甚至是 Google 内部的其他团队正在这样做。Grab 公司不是这样的,尽管我们也会受到结果的很大影响。但是有很多大鲨鱼围绕着 Android 这艘船在转。Google 需要提高警惕。

这是一个很好的时候加入到 Grab 公司。如果你是一个专业的具有说服力的程序开发人员,尤其是在西雅图或东部区域,并且我上次所说的任何关于 GDP、新兴的网络以及原生的淘金机会和你产生了共鸣,那么严肃地讲:你应该考虑以你最快的速度赶到 Grab 公司来。

嘿,直接打一辆车吧。

最后说两句:还有很多细微可讲的地方,很多方面我都进行了简化。期待看到大家的讨论。

本文文字及图片出自 OSchina

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注