2018年,整個移動互聯(lián)網(wǎng)進入了下半場。為什么說已經(jīng)進入了下半場,談未來,先講歷史,我們來重頭開始捋一捋吧。
2005 年,Google 收購了成立不到兩年的 Android 公司,經(jīng)過三年多的研發(fā),于 2008年推出了 Android 1.0 ,此時還是搭載塞班系統(tǒng)的諾基亞的天下,業(yè)界并不看好 Google 的 Android ,很多人認(rèn)為最多一年 Google 就會放棄 Android。
2009 年, Android 1.5 出世,HTC G1 和 HTC G2 大賣,此時,國內(nèi)已經(jīng)有一批人開始寫 Android 應(yīng)用開發(fā)的入門教材了,盡管現(xiàn)在看來是多么沒含量、官方文檔一字不漏翻譯甚至有翻譯不當(dāng)?shù)慕滩?,但是人家的確是抓住了時機賺了一把,也感謝這些人,讓英文不佳的開發(fā)者快速入門。
2010 年,Android 2.3 面市,本人也是從這個版本開始擁有了第一臺 Android 手機,開始接觸 Android 開發(fā),也就是這時開始 Android 手機的市場占有開始快速提升,在美國的市場占有率達到了 30%。而這時,有一個巨頭開始在崩塌,它就是那個鈴聲都能讓人幻聽的諾基亞,一代手機帝國,轟然倒下了。
2011 年中,喬布斯生前的最后一部金典的產(chǎn)品 iPhone 4S 面市,把業(yè)界智能手機品質(zhì)推到了一個新高度,當(dāng)時的 Android 手機和 iPhone 比起來,無論是在工業(yè)設(shè)計還是運行速度、無論是穩(wěn)定性還是安全性,Android 都是初生的嬰兒。可惜 iPhone 太貴了,在當(dāng)時看來 ,手持 iPhone 是一種身份的象征,也就是這個時候,小米橫空出世,讓 Android 市場開啟了千元機的時代,我們應(yīng)該感謝小米、華為讓我們大多數(shù)人快速上手智能手機。這一年,國內(nèi)一大批 JavaEE 開發(fā)者開始轉(zhuǎn) Android 開發(fā)了,我就是其中的一員,此時開發(fā)手段也是比較原始的,比如網(wǎng)絡(luò)框架,基本都是在 HttpClient 或 HttpUrlConnection 上手動封裝, 大家都在干重復(fù)的活,程序員最不愿意干重復(fù)的活,后來才有了 AndroidAsyhcHttp、Volley、Ritrofit…
2012 年,Android 相序推出了 Android 3.x 和 Android 4.x ;3.x 主要用于平板設(shè)備,這個時候 Android 程序員開始認(rèn)識 Fragments,一種為大屏而生的視圖,如今被你我他用得很頻繁;4.x 在流程度和易用性上做了幾次優(yōu)化,例如動畫繪制二級緩沖升到三級緩沖。
到這個時候國內(nèi) Android 開發(fā)已經(jīng)是火得一塌糊涂,學(xué)過 Java ,不管你有沒有 Android 經(jīng)驗,只要你愿意從事 Android 開發(fā)就能找到待遇不錯的工作;整個行業(yè)一片欣欣向榮,隨便一家互聯(lián)網(wǎng)公司,不做兩個 App 都不好意思說自己是互聯(lián)網(wǎng)公司,那些做渠道、市場的也是豪賺了一把,比如 91、豌豆莢。也醞釀出了第一批 APP ,比如當(dāng)時我們手機裝得最多的就是 QQ 、微信、360助手、搜狗輸入法、百度地圖、UC瀏覽器、天天動聽、優(yōu)化大師、墨跡天氣??吹?jīng)]有,大多數(shù)都是工具屬性,還談不上改變生活,還沒有滴滴打車、還沒有各種 O2O 應(yīng)用、微信也只是單純的聊天工具。但是大家都看到了移動互聯(lián)網(wǎng)即將進入生活的方方面面的趨勢了, 還有好多 APP 要開發(fā),從零到一的開發(fā)一款 APP 的機會一大把, 還需要好多 Android 開發(fā)者入局干事情。
2013 年到 2014 年這兩年 google 相序發(fā)布了 4.4 和 5.0,前面講過,早期的 Android 就是初生的嬰孩,安全、性能都存在問題,比如 2012 年,有人讓我寫程序監(jiān)聽別人的電話、短信,居然輕而易舉地就能實現(xiàn)這個功能,可見安全漏洞是多么明顯,然而在4.4、5.0 上就難了,在后面的 6.x、7.x 就更難了。在性能方面,我覺得 4.4 和 5.0 具有劃時代的意義,4.4 開始 google 開始引入 ART 虛擬機準(zhǔn)備代替 Davik 虛擬機, 5.0 以后,在摩爾定律的作用下, 手機硬件性能、內(nèi)存也上來了, 徹底廢棄了 Davik, 完全使用 ART ; 為啥 ART 之后為速度就快了?這里我簡單解釋一點, 了解 JVM 的應(yīng)該比較好理解, Java 字節(jié)碼需要通過 JVM 解釋成目標(biāo) CPU 可執(zhí)行的指令集, 這也是 Java 運行速度慢的原因, 后來出現(xiàn)了 JIT 編譯, 對經(jīng)常執(zhí)行的熱區(qū)代碼做一次解釋,解釋成對應(yīng)目標(biāo) CPU 指令集, 放到內(nèi)存中, 下一次執(zhí)行的時候就直接從內(nèi)存中取出這部分 CUP 指令直接執(zhí)行, 省去了每次都解釋執(zhí)行的耗時; Davik 也是有 JIT 特性的, 不過還不夠好;能不能再安裝的時候就提前把要解釋的字節(jié)碼翻譯好? 內(nèi)存允許的話,答案是肯定的, ART 上面就這么干的, 這種方式叫做 AOT,即提前編譯。所以我們會發(fā)現(xiàn) 5.0 以后安裝程序會比較慢, 但運行速度快了太多, 5.0 以后 Android 和 iOS 的差距越來越小了。
2013 年到 2014 這兩年,移動互聯(lián)網(wǎng)進入了新一輪的爆發(fā)式增長,真正把草莽叢生、野蠻生長演繹到了極致,記得我在《一個程序員的運氣》這篇文章中講過一個故事:一個在 2010 年底還在白石洲和我同學(xué)一起住農(nóng)民房、擠公交的師兄,2014 年的時候已經(jīng)是身價千萬的副總了; 同一年,另一個公司的年終時候在樓下擺滿了奧迪作為年終獎,它就是 UC。經(jīng)過兩三年的瘋狂發(fā)展,生活的方方面面都可以在手機上進行了,各種 o2o 應(yīng)用打得不可開交,打的不用再去馬路邊等著、超市到路邊攤都不再需要掏現(xiàn)金、外賣隨叫隨到,移動互聯(lián)網(wǎng)真正改變了人民的生活方式…
這個時候整個行業(yè)需要從零到一開發(fā) APP 機會少了很多了,到 2015 年的時候很多創(chuàng)業(yè)公司第一步想到的不是要開發(fā)一個 APP ,而是先開一個微信公眾號。而這個時候 APP 端的開發(fā)模式也慢慢在發(fā)生變化,各種動畫開源庫、網(wǎng)絡(luò)開源庫不說,原生開發(fā)已經(jīng)相當(dāng)成熟了,熱更新插件化開發(fā)也初出鋒芒,摩爾定律的作用下,硬件性能上來了,H5 也越來越多的分擔(dān)了頁面任務(wù),Android 開發(fā)進入混合開發(fā)時代。
提高效率、解放雙手是人類永恒的追求,程序員的理想就是要干到自己“沒活干”。2015 年底 facebook 推出 React Native,跨平臺、動態(tài)性和性能達到雙平衡,我也第一時間研究并寫了 demo,發(fā)現(xiàn)上手也快,這種 web 化的開發(fā)方式、原生化的體驗一定是趨勢,js 再次發(fā)光發(fā)熱。2016 年插件化框架徹底成熟,沒過多久,阿里的 Weex 發(fā)布,和 RN 如出一轍,Android 開發(fā)徹底進入混合時代,這個時后對端的架構(gòu)能力是有要求的,你要考慮你的應(yīng)用是不真的需要組件化,如果需要,又怎么把組件、業(yè)務(wù)插件、Web 容器、統(tǒng)跳協(xié)議等有效結(jié)合。
2017 微信小程序面市,跟著文檔這個 Demo 輕而易舉,站在創(chuàng)業(yè)者的角度,你還會花這么多成本去開發(fā)一個原生的 App 嗎?而且這個時候各個領(lǐng)域、細(xì)分領(lǐng)域刮分已經(jīng)完成,開發(fā)新 App 的機會真的沒有多少了。 如今小程序自己形成氣候,各家 App 都想仗著平臺和流量做自己的航母,都要做自己的小程序,真是畸形,從統(tǒng)一的角度看,我還是希望快應(yīng)用能成。
隨著 RN、Weex、小程序等前端技術(shù)的出現(xiàn),技術(shù)發(fā)展又完成了一個輪回,在摩爾定律作用下,歷史是如此的相似。還記得那個曾經(jīng)差點要了微軟命的瀏覽器公司嗎,你操作系統(tǒng)很牛逼,但是流量入口都在我這,微軟也感覺到了不妙,后來才出現(xiàn)了 IE 瀏覽器,IE 瀏覽器出現(xiàn)后微軟內(nèi)部也開始了系統(tǒng)派和瀏覽器派兩個派系曠日持久的斗爭,最終系統(tǒng)派獲勝了,不知道這是不是后來微軟在新互聯(lián)網(wǎng)時代衰敗的原因!移動互聯(lián)網(wǎng)和PC互聯(lián)網(wǎng)的發(fā)展軌跡太像了,只不過移動互聯(lián)網(wǎng)是螺旋上升的一個輪回,2008 年到現(xiàn)在,正好十年,十年一輪回。
下半場
下半場我們的戰(zhàn)場在哪里?
區(qū)塊鏈
2018年初,投資大亨徐小平的一張聊天截屏撼動了整個互聯(lián)網(wǎng)圈,可謂一石激起千層浪。一時間,連賣菜大媽都在討論區(qū)塊鏈,各類打著區(qū)塊鏈的牌子圈錢割韭菜的公司、創(chuàng)業(yè)團隊如雨后春筍,直到李笑來的一段錄音流出,感覺大家都被這場“革命”的資本家當(dāng)傻逼使了,著實為這把大火澆了一盆水。說區(qū)塊鏈會比曾經(jīng)的互聯(lián)網(wǎng)革命還要猛烈,我覺得有點喧賓奪主了,區(qū)塊鏈只是互聯(lián)網(wǎng)這個土壤上長出來的一根藤,只會在有限領(lǐng)域發(fā)揮很好的作用。技術(shù)上看,區(qū)塊鏈不是什么新技術(shù),是密碼學(xué)、分布式、p2p等技術(shù)結(jié)合經(jīng)濟學(xué)在特定領(lǐng)域的應(yīng)用。如果你本身在密碼學(xué)、安全領(lǐng)域或分布式開發(fā)領(lǐng)域有經(jīng)驗,轉(zhuǎn)區(qū)塊鏈開發(fā)又有何難?換個賽道開車而已。不過據(jù)我所知的 Android 客戶端開發(fā),95% 是沒有機會也沒自主去從事或深入研究過這方面的技術(shù),所以基本認(rèn)定區(qū)塊鏈不是 Android 開發(fā)的下半場,轉(zhuǎn)崗搞區(qū)塊鏈優(yōu)勢不大。
小程序
RN、Weex、小程序出來的時候,我都有研究過,并且能輕易上手,作為一名 Android 原生開發(fā)的我都能輕易上手,更不用說那些前端工程師了,而且現(xiàn)在各家小程序的上層開發(fā)技術(shù)在我看來都是快消品,五年、十年后他們還在么?當(dāng)然如果我們能抽象一下各家小程序背后的技術(shù)本質(zhì),例如深入研究 JS 執(zhí)行引擎原理、瀏覽器內(nèi)核等,那你又管他五年后XX小程序還是WW小程序呢?肯定離不開這些技術(shù)本質(zhì),這一點很多前端小伙伴一定比我們終端小伙伴玩的溜。
人工智能
人工智能并不是什么新概念了,可以說自計算機誕生就有人思考人工智能的問題了,不過人工智能的概念是在 1956 年夏天、美國達特茅斯學(xué)院的一次研討會上首次提出的,那次會議聚集了麥卡錫、香農(nóng)等業(yè)界泰斗,被認(rèn)為是人工智能的誕生標(biāo)志,史稱達特茅斯會議。此后,每隔一段時間,人工智能就發(fā)展到一個新的階段,例如 1963 年計算機與人類的首次象棋大戰(zhàn)、1996 年深藍(lán)計算機戰(zhàn)勝國際象棋大師、1997 年比爾蓋茨的智能化豪宅建成,推進智能家居的概念誕生、近些年 Google 的 AlphaGo、無人無人車等,語音、圖像識別等技術(shù)已經(jīng)進入多個領(lǐng)域的應(yīng)用。2018 年,移動互聯(lián)網(wǎng)各個方面應(yīng)用領(lǐng)域進入紅海,各大巨頭都在尋找新的賽場,人工智能成了“兵家必爭之地”,BAT 等互聯(lián)網(wǎng)巨頭都紛紛成了 AI 實驗室…
人工智能的基礎(chǔ)是數(shù)據(jù)和算法,而數(shù)據(jù)又必須基于連接獲取,需要萬物聯(lián)網(wǎng),強大的數(shù)據(jù)加算法作為神經(jīng)中樞,各種各樣的終端設(shè)備就是神經(jīng)末梢,神經(jīng)末梢感知數(shù)據(jù)通過聯(lián)網(wǎng)傳遞到中樞,神經(jīng)中樞在越來越多的數(shù)據(jù)喂養(yǎng)下反過來更好的為各個終端提供更精確的決策和服務(wù),這就是馬云爸爸說過的 DT 時代,2018 年,我們從 IT 時代進入了 DT 時代,紅衣教主周鴻祎 2013 年的時候就說過未來的手機硬件一定是沒有利潤的,甚至揚言要做免費的手機,通過軟件增值來賺錢,而在 DT 時代這一點將會更加明顯,萬物聯(lián)網(wǎng)的終端硬件一定不是盈利點,真正的價值還是在數(shù)據(jù)和服務(wù)。作為多年的 Android 開發(fā),我也一直在思考在這個時代,我們的競爭力在哪里?近年大數(shù)據(jù)工程師、算法工程師比較吃香,終端開發(fā)有必要轉(zhuǎn)算法嗎?如果你抱著五年十年長時間打算,我到覺得未嘗不可。不過我覺得如果對 Android 系統(tǒng)研究的足夠深入,這個時代依然還是我們的時代,萬物聯(lián)網(wǎng),一定會需要一大波終端工程師,而未來的智能設(shè)備一定需要離線算法能力,終端要承擔(dān)一部分算法,到時候我們能發(fā)揮的空間更大。
如何在下半場走得更遠(yuǎn)
無論是上半場還是下半場,我們只是換了個現(xiàn)場而已,在我們一生所學(xué)的本領(lǐng)中,有些換了個戰(zhàn)場就不能用了,有些還能繼續(xù)使用。
說到這個, 我想起了有個前輩說的一個概念:知識衰竭周期,這里我拓展為技能衰竭周期。我們一身中所學(xué)習(xí)的技能,有的很快就過時,稱之為衰竭,有的技能十年、百年都不過時,這里有個最鮮明對比: 研究心血管的醫(yī)生和 fash 程序員,醫(yī)生完全不用擔(dān)心人體心血管結(jié)構(gòu)會變化而自己的技能經(jīng)驗會淘汰,而十年前比較火的 flash 開發(fā)技術(shù)如今快面臨淘汰了,所以說學(xué)醫(yī)的普片越老越吃香,而我們程序員不得不不斷學(xué)習(xí)。既然要學(xué)習(xí),我們也考慮下成本和收益,多花些心思在衰竭周期較長的知識、技能上。
從上到下衰竭周期越長,從下到上變化越多同時短期內(nèi)的需求越多。長遠(yuǎn)來看,越是底層的東西越值得我們?nèi)パ芯?,底層的搞明白了,上層變化再多都能很快上手,以不變?yīng)萬變。以上圖片是我個人 YY 的,一定不全面,但能表達一個意思:技術(shù)服務(wù)業(yè)務(wù), 越是上層的技術(shù)越受制于業(yè)務(wù),業(yè)務(wù)千變?nèi)f化,上層的技術(shù)形態(tài)也就千變?nèi)f化。