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

























