每日最新頭條.有趣資訊

谷歌離職員工:誰能從谷歌手裡偷走安卓?

編者按:一個人對前東家會恨到什麽程度?看看Steve Yegge就知道了。曾經在Google乾過13年的他不久前離開搜索巨頭加盟了東南亞共享計程車公司Grab,並且通過一篇《為什麽我要離開Google》數落了前東家的種種不是。大概是嫌這還不夠,最近他又寫了這篇《Who will steal Android from Google?》,數落了Android原生開發的種種不是,分析誰可能會從Google手裡搶走Android的控制權。Android也許是Google最重要的管道——如果今天不是,那未來10年肯定是。他們無法承擔失去對Android控制的損失。但是現在Google正面臨三個維度的全方位打擊:1)各種跨平台的開發框架2)想要取代Play Store的應用商店3)Facebook、微信等平台型app正在應用內直接做廣告業務。遺憾的是,Google對此似乎還沒有清醒的認識。

今天,我想以局外人及Android/iOS開發愛好者的身份談談Android。既然人人都知道你不可能連續兩次都成為爆款,所以這篇文章很可能不會流傳很廣。今天就你我吧。

我總是惦記著Android是因為我們在招移動開發者,你一定認為這是很簡單的任務對吧?但結果表明這是市面上最熱門的商品之一。Grab需要他們,每個人偶讀需要他們,但是市面上找不到那麽多人。這就好像想抓住一頭獨角獸一樣。

為什麽每個人都需要移動開發?因為web正在慢慢走向滅亡。我在Google的每個組織都有朋友——好吧,也許現在是前朋友了,他們會向我展現令人沮喪的圖表,不管你怎麽折騰,隨著整個世界向移動轉移,web都在穩步地走下坡路。見鬼,你大概還記得8、9年前Facebook從web優先向移動優先過渡的經歷吧?那次Facebook差一點一命嗚呼了。我的意思不是說一夜暴斃,但當這家公司意識到自己必須成為移動公司否則就要面臨湮沒時,他們經歷的完全是一場生存危機。

他們設法渡過了這場危機,但這並不容易,因為Android的開發棧是全世界最大堆的狗屎三明治。

狗屎烹飪

在Google大多數工程師都很清高,他們認為做移動或者web編程是不入流的事。“我不做前端,”他們用最傲慢的語氣說。這種現象我喜歡稱之為“鄙視的DAG,”DAG的意思是有向無環圖(Directed Acyclic Graph),有點像流程圖。在鄙視鏈頂端是崇高的搜索工程師,他們用的是C++語言,這門語言被認為比Java要更酷,而後者又比Python酷一點,然後後者又比JavaScript酷一點。而搜索又比廣告(Ads)酷點,廣告又比App酷點,App又比工具酷點,工具又比前端酷點。諸如此類。程式員喜歡互相鄙視。如果你時一名Google移動工程師的話,那實在是太不幸了,因為你處在所有鄙視鏈的最底端。

但是,在我本人親身經歷過從系統編程到大規模數據工程、編譯器設計、服務框架、遊戲開發、web開發以及移動開發之後,我向你保證,就算前端編程不比其他的編程工作難,也絕對不會比其他工作容易。後端的一切都乾淨整齊有序呈分布式或並行化;相對於依然跟25年前一樣惡心混亂的web編程,後端簡直就像天堂。但是跟移動編程(包括iOS在內)相比,web編程就像一趟美好的巴裡之旅,而前者就像一堆狗屎三明治。

Android呢?是的,那是所有裡面最大的狗屎三明治。Android開發者是英雄,如果你原諒我的話裡有話的話。為Google Maps或者Facebook或Snapchat這樣的大型應用對Android進行編程就像……算了就算我說了你也不會相信我的。你修改了一行代碼,然後坐下來等20分鐘再看看會發生什麽吧。而且你每改動一次,不管這次改動是如何的微小,80%的可能是第一次都不成功,因為功能互用性矩陣是出奇的稀疏。當然,你可以使用X,也可以使用Y,但是X和Y同時用就不行,因為去你的,夥計。

得,我還沒扯到設備兼容性問題。我在Google Play商店上面得到了一堆的1星評價,因為我的Wyvern遊戲app偶爾無法在LG設備上正常運行,於是我被迫到eBay上買了台寒酸的60美元的LG設備(而不是一台寒酸的600美元的LG設備)來複製那個bug,結果發現,嘿,他們有兩個Android API來在列表框上獲取滑鼠點擊事件,但其中一個API在LG上沒法用。

我的意思是,想想看吧。

現在的情況是:大大小小有一堆的競爭對手都想出了自己對Android框架的替代。我說的不僅僅是缺失功能的支持庫,儘管他們缺少了很多。不是。我說的是對Google的整個Android開發棧的完全替代。微軟有Xamarin,Adobe有Cordova,Facebook有React Native,我的意思是說這是個瘋狂小鎮。真的,好好看看吧。Framework7、Appcelerator Titanium、Onsen、Sencha、Kendo、XDK、Ionic、Mobile Angular、Unity,我的意思是,到底發生了什麽事?

這就好像是但凡嘗試過Android編程的人都已經放棄並且宣布:“這太糟糕了我要自己創業把它做得更好。”

不想被競爭對手超越的Google回應道:“哦是嗎?你不可能跟我們爭的,因為我們準備自己跟自己爭!”然後他們推出了Flutter,我絕不是亂講——這是一款跟原生Android競爭的、100%嚴肅的Android開發棧,Android團隊根本就不願意承認它的存在。

活著真好啊。

對Android的襲擊

這些開發框架意味著什麽呢?意味著Google容易受到攻擊。它們大都是跨平台的,這意味著你寫一個app就能同時在iOS和Android上面運行。不管你是大公司還是小作坊,沒人願意給兩支工程團隊付錢去在不同的平台上去做一模一樣的app。所以遷移到跨平台的框架存在著龐大的經濟壓力因素。唯一阻止這變成大逃竄的事情是這些框架還沒有像“原生”開發那麽好。

但是其中已經有少數(尤其是Facebook的React Native)非常非常接近了。如果它們中間的一個設法攫取足夠大的市場分,則Android基本上就變成了開發者生態體系的管道,不再受Google的控制了。

這個看起來似乎並不是什麽大生意,因為Google仍然由Play Store和OEM、授權等手段。對於大多數家夥來說,他們可能似乎願意舒服地坐在駕駛員座椅。但考慮到:如果所有的移動開發者都開始使用特定的跨平台框架X時,則任何其他的硬體/OS製造商或聯合體均可推出自己的競爭性硬體/OS平台(比如Windows)來直接支持框架X,所有的app都能在它上面跑(可能啟動還更快),這樣Google就被完全切斷了。相信我吧,很多公司都想這麽做。對不起,我的錯,不是很多。時所有人。誰不想呢?

對此Google的反應是堅定立場。他們在“原生”(傳統)Android編程上加倍下注,為Kotlin語言提供官方支持,對於原生Android開發者來說這是一大進步。我喜歡Kotlin;那是Java的未來。但我們得面對現實:移動市場的發展方向不是這個。大家編寫跨平台框架有兩大原因:首先,因為他們希望自己公司的app無需做兩遍事情就能在兩個平台上運行。其次,因為Android原生編程仍然非常痛苦,即便有了Kotlin,許多公司仍然覺得自己應該拋棄Android用某個更容易的東西從頭開始。

如果你是Android或iOS開發者,並且用過一段時間的React Native(Facebook做這個就是為了解決這些問題),在30秒鐘內你就會意識到它要好多了,假設你寫的不是遊戲,如果是的話你大概會用Unity。對於商業和生產力app,React Native提供了合理的性能,跨平台的兼容性,不可思議的工具(最好的出自微軟。你好,歡迎回來!),以及得到極大改進的開發速度。記得前面我說過在正常的Android技術棧上改一行代碼要20分鐘才能看到結果嗎?像Nest或者Facebook這樣的最大app身上就有可能會發生這樣的事情,但即便是中等規模的app也要2、3分鐘。而用React Native的話幾乎是馬上出結果。你做出改變,然後看到改變。

而這意味著你推出功能的速度可以快10倍,進而意味著推向市場的速度更快,進而擁有先發優勢,然後就是勝利接著勝利。拋棄原生編程投向React Native這樣的快周期的跨平台框架是致勝策略。

雖然沒有證據,但我懷疑Google的Android團隊不確定跨平台對他們究竟是好是壞,但他們的傾向是“壞”——否則的話他們會支持跨平台的Flutter。我個人認為這對他們是好事,但是我有知道什麽呢?

無論如何,他們目前正在努力聚焦於通過讓原生體驗不那麽糟糕來保持領先上面。由於對Snapchat和Instagram這樣的大應用來說Android是最糟糕的,他們主要想解決的是大型app的開發體驗問題,而這個主要又取決於構建時間。

為了解決這個,Google對“官方”Android應用構建系統進行了驚人的大量工作,其基礎又是已經非常複雜的Gradle系統,但然後Google又堆砌了一堆Android特性的東西。久而久之這套系統變得越來越複雜,以至於連構建工程師都無法理解其中的部分東西了。build type、product flavor和flavor dimension之間有什麽區別呢?只能助你好運了。但是他們一直在不斷地堆砌複雜性,因為他們以為這些特性對大廠的大app很重要。

諷刺的是最大的公司正在積極地倒戈相向——拋棄Google的,轉用Facebook的構建系統。Google追逐的是一項瀕死的戰略。

所以儘管Google似乎知道自己有問題,但是加倍下注的卻是一個沒人喜歡的解決方案:一個原生的技術棧,加上一個複雜到令人抓狂的Gradle構建系統。他們正在失去開發者。第三方技術棧正在攫取市場份額。

側面攻擊

更糟的是,開發棧並不是Android遭遇的唯一襲擊。從Google手中“偷”走Android還有其他辦法。辦法之一是建立一個更加成功的應用商店。Google對Android最大的鎖定是Play Store,但是這個引起了很多的爭議(無論是來自公司還是政府的),因為Android據稱是開放系統,但Play Store卻是Google 100%控制。微軟和Twitter支持的Cyanogen是一招妙棋,儘管由於內訌而失敗了,但它仍然是對Play Store進行割喉的第一次認真的嘗試。

不過再猜猜誰又來在這場應用商店大戰中插一杠?想不到吧:貝索斯,因為不從Google手裡偷走Android的話你沒法成為全球首位兆富翁。好吧……不管怎樣,我喜歡想象這一點會有所幫助。Amazon的應用商店已經頗為令人印象深刻,而且幾乎在所有Amazon與Google的面對面的競爭當中,Amazon都是執行更好的那個。等著瞧吧!

如果這還不足以令Google感到擔心的話,對Android還有第三波攻擊,而且這個正是它的痛點:廣告。Facebook的Android app已經變得如此龐大(經過數萬工程師數年的努力),以至於它已經發展成為為一個真正的平台,現在你可以直接在Facebook app裡面植入廣告。比方說《紐約時報》就可以在上面購買廣告位置,所有的錢都直接從《紐約時報》轉到Facebook,而Google一分錢都拿不到。你可以想象一下他們是什麽感覺。

中國的微信乾的事情跟Facebook一模一樣(編者注:其實應該是反過來好吧)。微信已經變成一個生機勃勃的平台,在它上面就可以搭建和部署其他app(也包括廣告)。這就好像整個市場都被嵌入到app裡面了。Facebook和微信移動app已經成為了獨立的廣告管道。

我們就直說了吧:Google創建Android的唯一原因是因為這是個廣告管道。Google是一家廣告公司,全世界最大的廣告公司,他們一直一直一直都在受到其他想要讓你的注意力轉移到自己的管道而不是Google的管道的公司的攻擊。最後的分析裡面談到的對網絡中立性的攻擊就是這個。電信運營商和ISP希望塞廣告給你,或者至少要從Google和Facebook賺的錢裡面分一杯羹。

只要你看到像Facebook、Google、Amazon或者微軟這樣的公司神神秘秘地進入一個奇怪的新業務領域,你幾乎可以打賭他們打的是管道的主意。Google Chrome是管道,為的是控制對Web的訪問。微軟的Xbox是管道,為的是針對PlayStation,以防後者踢走PC坐上家庭上網管道的位置。HBO/Amazon/Netflix內容大戰完全也是管道之爭。Amazon Echo是管道;你的家是當今管道之爭最激烈的戰場。甚至Google Maps也是本地廣告的管道。一旦你留意觀察,就會發現處處都是管道。

歸根結底,那些公司希望你通過他們而不是別人的管道去觀看喜愛的內容(書、電影、遊戲、波特曼的性專欄),這樣他們就能獲得廣告收入,或者至少能拿到它的小妹妹,訂閱收入。

Android也許是Google最重要的管道——如果今天不是,那未來10年肯定是。他們無法承擔失去對Android控制的損失。但是我們已經看到它至少面臨著三種不同維度的協同攻擊:開發者生態體系(React Native等),應用商店(Amazon的應用商店以及據傳Cyanogen的後繼者),以及輕量級的應用內市場(目前是微信和Facebook)。目前為止Google對上述每一種威脅的反應是……好吧,就只是說我們還是領先。目前為止。

不過,話又說回來……

這一切似乎都是一堆沒有用的誇張質疑,但它的確影響到了我們Garb下面的工作了,因為我們必須就我們的移動app採用什麽樣的技術棧做出重大決策,而我們的移動app就是我們面向世界的視窗——是我們面向乘客、司機、商家、代理等的管道。

如果你認為Google有任何風險會失去對Android的控制的話,那你最好的辦法就是使用跨平台框架,因為它可以通過可移植性改善來對衝風險。而如果你陷入到激烈的競爭當中需要發布得更快的話,你可能應該避開Android Native。Android仍然被Gradle拖累,這玩意兒永遠也快不了,而這個很大程度上是因為Android設計上的遺留問題,這種問題是很難掩蓋的。

在跨平台的選項當中,React Native看起來似乎是獲勝者。它對web開發者很有吸引力,而後者大概是全球最大的開發者閱聽人。Grab目前開始往React Native上面投資看看它是不是能夠兌現它的承諾,目前為止情況似乎還相當不錯。

概括一下本文的主要思想:跟其他人一樣,Grab需要移動開發,但那些人很難找因為Android編程非常令人討厭,而且顯然大家都知道這一點,除了Google自己,所以現在生態體系開始湧現了不少競爭對手,它們個個都想成為移動編程的唯一平台……而這又導致招聘開發者難上加難因為碎片化太嚴重了。

但不管你的選擇是什麽,現在是移動開發者的好時候。如果你是非移動開發者,應該考慮換一下工種了。從後端開發開始然後學習移動開發會讓你成為“全棧開發者”,這在市場上可是更加稀有的獨角獸。

現在是爭奪對Android控制權的好時機,如果你要做這件事的話。見鬼,甚至連其他的Google團隊也在做這件事。雖然我們會受到這件事結果的實質性影響,但Grab不會去做這件事。但是Android這條船周圍有很多鯊魚環伺。Google得小心了。

編譯組出品。編輯:郝鵬程。

獲得更多的PTT最新消息
按讚加入粉絲團