本文來自微信公眾號:CSDN(ID: CSDNnews)
“誰會從 Google 手中搶走 Android?”
早在去年,Google 就曾因 Android 移動操作系統(tǒng)涉嫌壟斷行為而面臨巨額罰款威脅。再加之各類競爭者虎視眈眈,以及跨平臺替代框架對原生 Android 的圍攻,Google 的日子似乎并不好過。
作為一個曾在 Google 工作了 13 年之久的技術(shù)老兵,Steve Yegge 在離職加入了東南亞出行巨頭 Grab 公司之后,發(fā)布了一篇分析自己為何離開Google 的博文,強調(diào)了 Google 在創(chuàng)新能力方面的漸趨弱勢,一度引發(fā)廣泛熱議。時隔近一年,他又在本文中重點介紹了 Google 的 Android 技術(shù)本身存在的一些問題,譬如 Dev Stack 缺失、兼容性差、開發(fā)框架安全性低等等,對此,你怎么看?
以下為譯文:
1. 前言:從離開 Google 到糟糕的 Android
我至今仍然不能百分之百地確定為什么我發(fā)表的那篇叫做《我為什么要離開谷歌》的博文會受到如此多的關(guān)注。在那篇博文里,我只是嘮叨了些諸如“我換工作比較隨性”之類的廢話,卻不知為何會被逐字逐句地翻譯成 80 種語言來傳播,直到后來某一天才被娜塔莉·波特曼的一篇專欄文章超越。公平地說,那個專欄要有趣得多。
我猜其中一個原因是因為那一周沒有什么勁爆新聞吧?另一個原因可能是 Medium 網(wǎng)站擁有了大量的用戶?Medium 網(wǎng)站是一個很好的平臺,回想起寫博客的日子,我曾經(jīng)希望谷歌也能創(chuàng)造出一個像 Medium 這樣有新意的產(chǎn)品,但正如你所知,事實上并沒有。
無論原因是哪一個,我的博文收到的回復還是很有趣的。巴基斯坦的某個家伙說如果我碰巧和他在同一個城市的話,就要請我喝杯啤酒。倫敦的某人愿意出一千刀,讓我在電話里花一個小時和他聊聊語音搜索市場或關(guān)于 Garbo 的話題,我禮貌地拒絕了,因為我實際上對這些一無所知。一個俄羅斯人甚至在一次聚會上走過來對我說:“你樹立了不少敵人啊”。哈哈,多么有趣的時光。
網(wǎng)上也有很多評論對我想在那篇博文中表達的關(guān)鍵信息有不少誤解,有人甚至問“這不就是個專車服務(wù)嗎?” 我曾嘗試描繪一張更大的“畫”,但似乎搞砸了。有時間我會回過頭再重新看看那篇博文,看能否讓大家更明白些。
但今天我想要討論的重點是 Android——站在一個外行者以及業(yè)余愛好 Android/iOS 的開發(fā)人員的立場,分享下我的個人觀點。
我一直關(guān)注 Android 是因為我們正在嘗試招聘一些移動開發(fā)人員,你會認為這件事情很簡單。但事實證明移動開發(fā)人員是當今市場上的“搶手貨”,很多公司都有需要,而且市場上懂得移動開發(fā)的人并不多。招聘他們就像想抓獨角獸一樣不容易。
為什么每個公司都需要移動開發(fā)人員?因為桌面網(wǎng)頁開發(fā)正在慢慢消失。我在谷歌的各個開發(fā)團隊都有些朋友——好吧,或許現(xiàn)在只能算是前朋友吧——他們曾經(jīng)在背地里指責我。但不管他們?nèi)绾闻u我,隨著整個世界向移動端傾斜,桌面網(wǎng)頁開發(fā)會漸漸減少。你可能還記得 Facebook 從“Web First”到“Mobile First”的轉(zhuǎn)變吧,那差不多是在 8、9 年前的事了,F(xiàn)acebook 當時差點就完蛋了。我并不是說這種轉(zhuǎn)變會在一夜之間發(fā)生。但這家公司在意識到他們要么成為一個移動互聯(lián)網(wǎng)公司要么被市場拋棄的時候,確實經(jīng)歷了一場生存危機。
他們成功了,但這確實不容易,因為 Android 的 Dev Stack(開發(fā)堆棧)是世界上最大的一坨 poo sandwich。
2. Google 內(nèi)部工程師的鄙視鏈造成的 Android 窘境
在谷歌,大多數(shù)工程師都很傲慢而不愿做移動或網(wǎng)頁開發(fā)工作。他們非常傲慢地宣稱“我不做前端開發(fā)”。那里有一種現(xiàn)象,我喜歡稱之為“鄙視 DAG 鏈”,這里的 DAG 是指有向無環(huán)圖,有點像流程圖。在鄙視 DAG 鏈的頂端坐著的是用 C++ 寫搜索發(fā)動機的工程師,他們比 Java 工程師酷,Java 又比 Python 酷,Python 又比 JavaScript 酷。同樣,寫搜索的比寫廣告系統(tǒng)的酷,寫廣告的比寫 App 的酷,寫 App 的比工具酷,工具又比做前端的更酷。諸如此類。程序員喜歡互相看不起對方。如果你不幸成為谷歌的移動開發(fā)工程師,那么你將被困在幾個鄙視鏈的底部,每個人都在俯視你。
但是,當我一個又一個地從事了所有這些開發(fā)工作之后,從系統(tǒng)編程到大規(guī)模數(shù)據(jù)工程,從編譯器設(shè)計到服務(wù)框架開發(fā),從游戲開發(fā)到 Web 開發(fā),再到移動開發(fā),我可以向你保證,前端編程即使不會更難,也至少和其他開發(fā)工作一樣困難。后端中的一切看上去都是美觀、整潔、有序、分布式并且是可并行的——與 25 年后仍然一團糟的前端網(wǎng)頁開發(fā)相比,這簡直是天堂。如果再和包括 iOS 在內(nèi)的移動編程那種“便便三明治”相比,哪怕前端網(wǎng)頁編程也會猶如巴厘島的一次美妙之旅。
Android 怎么樣呢?沒錯。這是他們中最大的“poo sandwich”。如果不介意我說句俏皮話的話,Android 開發(fā)人員都是英雄。如果用 Android 來開發(fā)巨型應(yīng)用,如谷歌地圖、Facebook 或 Snapchat……如果我告訴你,你都不會相信——改完一行代碼,坐在那里要等上 20 分鐘才會看到發(fā)生了什么。你所做的每一個更改,無論多么細微,在第一次嘗試時都有 80% 的機率不會有效果,因為 Android 的特征互操作性矩陣異常簡單。你可以用 X,也可以用 Y,但是因為某個該死的原因你就是不能同時用 X 和 Y。
設(shè)備兼容性這事更是讓我火大。我在 Google Play 商店里有一堆一星評論,因為我的 Wyvern 游戲 App 隨機地不能在 LG 設(shè)備上工作,所以我不得不去 eBay 上買一個 60 美元的廉價 LG 設(shè)備(而不是那種劣質(zhì)的 600 美元的 LG 設(shè)備)來重現(xiàn)這個 Bug,結(jié)果發(fā)現(xiàn) Android 有兩個在滾動列表上獲取鼠標點擊事件的 API,但是有一個 API 在 LG 上不起作用。
我想說,有沒有搞錯!
正因為 Android 總有這樣的莫名其妙的事情發(fā)生,現(xiàn)在許許多多的競爭對手,無論大小,都推出了自己的 Android 替代框架。他們想替代的不僅僅是缺失功能的支持庫(盡管很多這樣做了),他們更想要做的是全面替代谷歌 Android 的全面的開發(fā)堆棧?,F(xiàn)在已經(jīng)面世的替代框架有微軟的 Xamarin、Adobe 的 Cordova、Facebook 的 React Native。除此以外,再仔細看看,還有 Framework7、Appcelerator Titanium、Onsen、Sencha、Kendo、XDK、Ionic、Mobile Angular、Unity——天吶,這到底是要整哪一出!
就像所有曾經(jīng)嘗試過 Android 開發(fā)的人放棄后都會說:“Android 太糟糕了,我要自己去做一個更好的?!?/p>
而谷歌,不甘于被競爭對手超越,回應(yīng)說,“哦,是嗎?你無法和我們競爭,因為我們的競爭對手是我們自己!”。然后他們推出了 Flutter,這是一個 100% 嚴肅的 Android 開發(fā)堆棧,與原生 Android 競爭,而 Android 開發(fā)團隊甚至拒絕承認它的存在。
3. Android 的對手
這些開發(fā)框架的問題在于它們使 Google 容易受到攻擊。大多數(shù)此類框架都是跨平臺的,這意味著你只需編寫一個應(yīng)用就可以在 iOS 和 Android 上運行。不管你是大公司還是小作坊,沒有人愿意付雙份薪水請兩個開發(fā)團隊在不同的平臺上編寫完全相同的應(yīng)用。因此,巨大的經(jīng)濟壓力驅(qū)使公司遷移到跨平臺框架。唯一拖后腿的地方在于,目前這些框架還不如“原生”開發(fā)框架那么棒。
但其中一些框架(尤其是 Facebook 的 React Native)距離這個目標已經(jīng)非常非常近了。如果它們中的一個成功搶占了足夠大的市場份額,那么 Android 基本上就成了開發(fā)者生態(tài)系統(tǒng)的一部分,并且這個系統(tǒng)已經(jīng)不再由谷歌控制了。
這似乎不是什么大問題,因為谷歌仍然擁有 Play Store、OEM 和許可授權(quán)等。對大多數(shù)人來說,他們似乎很舒服地坐在駕駛座上。但是考慮一下:如果所有移動開發(fā)者都開始使用一個特定的跨平臺框架 X,那么從字面上來看任何其他的硬件/操作系統(tǒng)制造商或聯(lián)盟都可以和他們自己的競爭硬件/操作系統(tǒng)平臺(比如 Windows)一起直接支持該框架 X,并且所有的應(yīng)用程序都可以在其上運行(可能更快,更容易啟動)。這將完全把谷歌切割出來。相信我,很多公司都想這樣做。對不起,我說錯了,不是很多,而是全部。誰不想呢?
谷歌對這種情況的反應(yīng)是絕不讓步。他們加倍投入到自己的“原生”(傳統(tǒng))Android 編程,為 Kotlin 語言提供官方支持,這對于原生 Android 程序員來說是一個很大的進步。我喜歡 Kotlin,它代表 Java 的未來。但讓我們面對現(xiàn)實:這已經(jīng)不是移動開發(fā)的發(fā)展方向了。人們編寫跨平臺框架的原因有兩個:第一,因為他們希望公司的應(yīng)用程序在兩個平臺上工作,而不需要做兩倍的工作。第二,因為 Android 原生開發(fā)仍然如此痛苦,即使有了 Kotlin,許多公司也感覺他們應(yīng)該扔掉它,并從一個更容易的技術(shù)上從頭再來。
如果你是一個 Android 或 iOS 開發(fā)者,并且你花了一些時間嘗試 React Native(Facebook 創(chuàng)建它是為了幫助解決這些問題),不到 30 秒你就會意識到這是更好的方法,不過前提是你開發(fā)的不是游戲,否則你可能更愿意使用 Unity。對于業(yè)務(wù)和產(chǎn)品類的應(yīng)用,React Native 提供了合理的性能、跨平臺兼容性和極為方便的工具(最好的來自 Microsoft),極大提高了發(fā)展速度。還記得我前面說過一行代碼的改變效果在常規(guī) Android 堆棧中要花 20 分鐘才能看到嗎?這可能發(fā)生在像 Nest 或 Facebook 這樣的大型應(yīng)用程序中,但即使是中型應(yīng)用程序,也可能需要 2-3 分鐘。而 React Native 則即時的,你一旦改變了代碼,就能即刻看到效果。
這意味著產(chǎn)品功能的發(fā)布速度可以提高 10 倍;這意味著更快的上市時間;這意味著先發(fā)制人的優(yōu)勢;這意味著你們在競爭中不斷取勝。放棄原生編程框架,轉(zhuǎn)而使用像 React Native 這種快節(jié)奏的跨平臺框架,將會讓你立于不敗之地。
我懷疑,在沒有證據(jù)的情況下,谷歌的 Android 團隊并不能確定跨平臺對他們是好是壞,但他們傾向于“壞”,否則他們會為跨平臺的 Flutter 提供更多支持。我個人認為這對他們有好處,但我說了不算。
不管怎樣,谷歌目前正致力于通過改善原生體驗,來保持自己的領(lǐng)先地位。而且,由于原生體驗對于像 Snapchat 和 Instagram 這樣的大型應(yīng)用程序來說是最糟糕的,它們主要是試圖解決大型應(yīng)用程序開發(fā)體驗問題,而這主要又是由構(gòu)建時間來決定的。
為了解決這一問題,谷歌在改善“官方”的 Android 應(yīng)用程序構(gòu)建系統(tǒng)上做了大量工作,而這個系統(tǒng)自身是基于本來就已經(jīng)非常復雜的 Gradle 系統(tǒng),谷歌隨后又在其上加入了大量亂七八糟的 Android 特有的東西。日復一日,這個系統(tǒng)變得越來越復雜,甚至構(gòu)建工程師都不再能理解其中的某些部分。如果你想試著搞清楚構(gòu)建類型(Build type)、產(chǎn)品風格(Product flavor)和風格維度(Flavor dimension)之間到底有什么區(qū)別,那只能說祝你好運了。因為谷歌一直在增加這個系統(tǒng)的復雜性,他們認為增加的這些東西對于擁有大型應(yīng)用的大型公司很重要。
諷刺的是,大多數(shù)大型公司都在積極地將其棄之不用,轉(zhuǎn)而支持 Facebook 的 Android 構(gòu)建系統(tǒng)——Buck,看起來谷歌正在走向一個死胡同。
因此,似乎谷歌已經(jīng)明白這是一個問題,但是他們卻在加倍致力于一個沒有人喜歡的解決方案——一個擁有極其復雜的 Gradle 構(gòu)建系統(tǒng)的原生堆?!_發(fā)人員正在遠離,而第三方開發(fā)堆棧正在不斷獲得市場份額。
4. 互聯(lián)網(wǎng)巨頭們針對 Android 發(fā)起“攻擊”
更糟的是,開發(fā)堆棧并不是安卓系統(tǒng)受到的唯一攻擊。還有其他一些方法可以將 Android 從谷歌竊走。一種方法是創(chuàng)建一個更成功的商店:Play Store 是谷歌對 Android 最主要的控制手段,它在公司和政府層面引起了很多爭議。因為 Android 據(jù)稱是一個開放系統(tǒng),但 Play Store 卻 100% 由谷歌控制。而微軟和 Twitter 支持下的 Cyanogen 曾是打破這種局面的重大嘗試。雖然由于內(nèi)部權(quán)力爭斗而最終失敗,但這是第一次認真嘗試對于 Play Store 進行“割喉”打擊。
另外猜猜還有誰和競爭對手正在聯(lián)手對谷歌大打出手呢?你猜對了,正是 Jeff Bezos(Amazon 的 CEO)。因為如果不從谷歌偷取 Android 系統(tǒng),他就不能成為全球首個萬億富翁。亞馬遜的應(yīng)用商店已經(jīng)做得相當不錯了,而我看到的亞馬遜和谷歌之間的幾乎每一場面對面的競爭中,亞馬遜的表現(xiàn)都會隨著時間的推移而越來越好。當心了,谷歌!
如果這些還不足以讓谷歌擔心,那么針對 Android 系統(tǒng)還有第三場襲擊,而這場襲擊正中谷歌的要害——在線廣告。如今,F(xiàn)acebook 的 Android 應(yīng)用變得相當龐大(多年來有數(shù)百名工程師致力于此),已然發(fā)展成為一個真正的平臺,現(xiàn)在企業(yè)可以直接將廣告投放到 Facebook 的應(yīng)用中。例如,《紐約時報》可以在那里購買廣告投放,所有的錢都直接從紐約時報轉(zhuǎn)到 Facebook,而不必勻一分錢到谷歌,可以想象這讓谷歌有何感受。
正如微信在中國一樣——微信應(yīng)用已經(jīng)成為一個蓬勃發(fā)展的平臺,可以在其上構(gòu)建和部署其他應(yīng)用(和廣告)。就像把一個完整的市場嵌入到應(yīng)用內(nèi)部,F(xiàn)acebook 和微信移動應(yīng)用已經(jīng)成為獨立的廣告發(fā)布渠道。
讓我們澄清一下:谷歌創(chuàng)建 Android 的唯一原因在于 Android 是一個廣告頻道(Channel)。谷歌是一家廣告公司,世界上最大的廣告公司,因而總是受到諸多公司無休止的攻擊,這些公司想把用戶眼球轉(zhuǎn)移到他們自己的頻道而不是谷歌頻道。歸根結(jié)底,這和針對網(wǎng)絡(luò)中立性的攻擊幾乎如出一轍。電信運營商和 ISP 希望為你提供所有你想看到的廣告,或者至少從谷歌和 Facebook 的廣告中分得一杯羹。
每當你看到像 Facebook、谷歌、亞馬遜或微軟這樣的公司神秘地進入一個陌生的新業(yè)務(wù),你可以確信新的廣告頻道爭奪開始了。谷歌的 Chrome 是一個控制 Web 訪問的廣告頻道;微軟的 Xbox 是一個針對 PlayStation 的廣告頻道,它威脅要將 PC 作為在家上網(wǎng)的頻道;YouTube 是一個廣告頻道;Instagram 和 WhatsApp 也是類似產(chǎn)物;HBO/Amazon/Netflix內(nèi)容戰(zhàn)是一個直白的廣告頻道;亞馬遜 Echo 是一個廣告頻道,而你的家已經(jīng)變成今天最大的廣告頻道之一;即使是谷歌地圖,也是本地廣告的一個廣告頻道……一旦你開始觀察,就會發(fā)現(xiàn)廣告頻道無處不在。
最重要的是,企業(yè)希望你通過他們的頻道而不是其他人的頻道觀看你最喜歡的內(nèi)容(書籍、電影、游戲等),這樣他們就可以獲得廣告收入,或者至少是訂閱收入。
Android 可能是谷歌最重要的頻道——即使今天不是,在未來的十年肯定是。他們不能失去對它的控制。但我們已經(jīng)看到,至少有三個不同維度的協(xié)同攻擊正在發(fā)生:開發(fā)者生態(tài)系統(tǒng)(React Native 和它的朋友們)、商店應(yīng)用(Amazon 的 App Store 和 傳言中的 Cyanogen 繼承者)以及輕量級的應(yīng)用內(nèi)市場(Facebook 和微信等)。到目前為止,谷歌對每一個威脅的反應(yīng)都是……好吧,不得不承認他們?nèi)匀惶幵陬I(lǐng)先地位,至少現(xiàn)在是。
言歸正傳——
所有這些看起來像是一堆無用的高談闊論(原本就是),但它實際上對 Crab 這樣的公司產(chǎn)生了實質(zhì)的影響,因為我們必須對我們開發(fā)移動應(yīng)用要使用哪些技術(shù)堆棧做出重大決策,這些應(yīng)用對于我們的乘客、司機、商人、代理等而言,是通向外部世界的窗口(也即頻道)。
如果你認為谷歌確實有可能失去對 Android 的控制,那么你最好的選擇是使用跨平臺框架,因為它將通過改進的可移植性來對沖你的賭注。如果你陷入了激烈的競爭中而需要更快的產(chǎn)品發(fā)布速度,你可能應(yīng)該選擇原生 Android 以外的產(chǎn)品。Android 仍在追逐著“Gradle”列車,但這條路絕不會走得太快,而這很大程度上是因為 Android 設(shè)計的遺留問題很難解決。
在跨平臺選項中,React Native 看起來像是一個贏家。它吸引了許多 Web 開發(fā)人員,這可能是全球最大的開發(fā)人員受眾,很難與之競爭。Grab 最近開始投資 React Native,看看它能否實現(xiàn)自己的承諾,到目前為止,看起來相當不錯。當然,要把我們的原生 Android 和 iOS 應(yīng)用退下來,還有很長一段路要走,因為移植確實需要時間。
總結(jié)一下這篇博文背后的主要觀點:移動開發(fā)人員市場緊缺,很難雇傭得到,因為除了谷歌以外,所有人都知道 Android 編程很艱難。所以現(xiàn)在整個生態(tài)圈正在迅速發(fā)展,很多競爭對手正在努力讓自己的方式成為移動開發(fā)的唯一真正方式。這使得招聘移動開發(fā)人員更加困難,因為整個生態(tài)圈是如此的分散。
但是如果不考慮你的風格,現(xiàn)在正是成為移動開發(fā)人員的好時機。如果你是一個非移動開發(fā)者,你應(yīng)該考慮切換到移動開發(fā)一段時間。從后端體驗和學習移動開發(fā)開始,您將成為一個“全棧開發(fā)人員”,這樣的開發(fā)人員在市場上更加罕見,是更具市場價值的獨角獸。
如果你對此有興趣,是時候參與這樣的競爭中來,以獲得對 Android 的控制,很多公司都在這樣做,甚至谷歌的其他團隊也在這樣做?,F(xiàn)在有很多大鯊魚繞著 Android 這條船在打轉(zhuǎn),谷歌需要提高警惕。
原文:who-will-steal-android-from-google
本文來自微信公眾號:CSDN(ID: CSDNnews)