2018年悦屏,整個(gè)移動(dòng)互聯(lián)網(wǎng)進(jìn)入了下半場(chǎng)节沦。為什么說(shuō)已經(jīng)進(jìn)入了下半場(chǎng)键思,談未來(lái),先講歷史甫贯,我們來(lái)重頭開(kāi)始捋一捋吧吼鳞。
2005 年,Google 收購(gòu)了成立不到兩年的 Android 公司叫搁,經(jīng)過(guò)三年多的研發(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í)墓贿,國(guó)內(nèi)已經(jīng)有一批人開(kāi)始寫 Android 應(yīng)用開(kāi)發(fā)的入門教材了茧泪,盡管現(xiàn)在看來(lái)是多么沒(méi)含量、官方文檔一字不漏翻譯甚至有翻譯不當(dāng)?shù)慕滩牧侨思业拇_是抓住了時(shí)機(jī)賺了一把队伟,也感謝這些人,讓英文不佳的開(kāi)發(fā)者快速入門幽勒。
2010 年嗜侮,Android 2.3 面市,本人也是從這個(gè)版本開(kāi)始擁有了第一臺(tái) Android 手機(jī)啥容,開(kāi)始接觸 Android 開(kāi)發(fā)锈颗,也就是這時(shí)開(kāi)始 Android 手機(jī)的市場(chǎng)占有開(kāi)始快速提升,在美國(guó)的市場(chǎng)占有率達(dá)到了 30%咪惠。而這時(shí)击吱,有一個(gè)巨頭開(kāi)始在崩塌,它就是那個(gè)鈴聲都能讓人幻聽(tīng)的諾基亞遥昧,一代手機(jī)帝國(guó)覆醇,轟然倒下了。
2011 年中炭臭,喬布斯生前的最后一部金典的產(chǎn)品 iPhone 4S 面市永脓,把業(yè)界智能手機(jī)品質(zhì)推到了一個(gè)新高度,當(dāng)時(shí)的 Android 手機(jī)和 iPhone 比起來(lái)鞋仍,無(wú)論是在工業(yè)設(shè)計(jì)還是運(yùn)行速度常摧、無(wú)論是穩(wěn)定性還是安全性,Android 都是初生的嬰兒凿试∨旁祝可惜 iPhone 太貴了似芝,在當(dāng)時(shí)看來(lái) ,手持 iPhone 是一種身份的象征板甘,也就是這個(gè)時(shí)候党瓮,小米橫空出世,讓 Android 市場(chǎng)開(kāi)啟了千元機(jī)的時(shí)代盐类,我們應(yīng)該感謝小米寞奸、華為讓我們大多數(shù)人快速上手智能手機(jī)。這一年在跳,國(guó)內(nèi)一大批 JavaEE 開(kāi)發(fā)者開(kāi)始轉(zhuǎn) Android 開(kāi)發(fā)了枪萄,我就是其中的一員,此時(shí)開(kāi)發(fā)手段也是比較原始的猫妙,比如網(wǎng)絡(luò)框架瓷翻,基本都是在 HttpClient 或 HttpUrlConnection 上手動(dòng)封裝, 大家都在干重復(fù)的活割坠,程序員最不愿意干重復(fù)的活齐帚,后來(lái)才有了 AndroidAsyhcHttp、Volley彼哼、Ritrofit…
2012 年对妄,Android 相序推出了 Android 3.x 和 Android 4.x ;3.x 主要用于平板設(shè)備敢朱,這個(gè)時(shí)候 Android 程序員開(kāi)始認(rèn)識(shí) Fragments剪菱,一種為大屏而生的視圖,如今被你我他用得很頻繁拴签;4.x 在流程度和易用性上做了幾次優(yōu)化孝常,例如動(dòng)畫繪制二級(jí)緩沖升到三級(jí)緩沖。
到這個(gè)時(shí)候國(guó)內(nèi) Android 開(kāi)發(fā)已經(jīng)是火得一塌糊涂篓吁,學(xué)過(guò) Java 茫因,不管你有沒(méi)有 Android 經(jīng)驗(yàn),只要你愿意從事 Android 開(kāi)發(fā)就能找到待遇不錯(cuò)的工作杖剪;整個(gè)行業(yè)一片欣欣向榮,隨便一家互聯(lián)網(wǎng)公司驰贷,不做兩個(gè) App 都不好意思說(shuō)自己是互聯(lián)網(wǎng)公司盛嘿,那些做渠道、市場(chǎng)的也是豪賺了一把括袒,比如 91次兆、豌豆莢。也醞釀出了第一批 APP 锹锰,比如當(dāng)時(shí)我們手機(jī)裝得最多的就是 QQ 芥炭、微信漓库、360助手、搜狗輸入法园蝠、百度地圖渺蒿、UC瀏覽器、天天動(dòng)聽(tīng)彪薛、優(yōu)化大師茂装、墨跡天氣∩蒲樱看到?jīng)]有少态,大多數(shù)都是工具屬性,還談不上改變生活易遣,還沒(méi)有滴滴打車彼妻、還沒(méi)有各種 O2O 應(yīng)用、微信也只是單純的聊天工具豆茫。但是大家都看到了移動(dòng)互聯(lián)網(wǎng)即將進(jìn)入生活的方方面面的趨勢(shì)了侨歉, 還有好多 APP 要開(kāi)發(fā),從零到一的開(kāi)發(fā)一款 APP 的機(jī)會(huì)一大把澜薄, 還需要好多 Android 開(kāi)發(fā)者入局干事情为肮。
2013 年到 2014 年這兩年 google 相序發(fā)布了 4.4 和 5.0,前面講過(guò)肤京,早期的 Android 就是初生的嬰孩颊艳,安全、性能都存在問(wèn)題忘分,比如 2012 年棋枕,有人讓我寫程序監(jiān)聽(tīng)別人的電話、短信妒峦,居然輕而易舉地就能實(shí)現(xiàn)這個(gè)功能重斑,可見(jiàn)安全漏洞是多么明顯,然而在4.4肯骇、5.0 上就難了窥浪,在后面的 6.x、7.x 就更難了笛丙。在性能方面漾脂,我覺(jué)得 4.4 和 5.0 具有劃時(shí)代的意義,4.4 開(kāi)始 google 開(kāi)始引入 ART 虛擬機(jī)準(zhǔn)備代替 Davik 虛擬機(jī), 5.0 以后胚鸯,在摩爾定律的作用下骨稿, 手機(jī)硬件性能、內(nèi)存也上來(lái)了, 徹底廢棄了 Davik坦冠, 完全使用 ART 形耗; 為啥 ART 之后為速度就快了?這里我簡(jiǎn)單解釋一點(diǎn)辙浑, 了解 JVM 的應(yīng)該比較好理解激涤, Java 字節(jié)碼需要通過(guò) JVM 解釋成目標(biāo) CPU 可執(zhí)行的指令集, 這也是 Java 運(yùn)行速度慢的原因例衍, 后來(lái)出現(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 特性的般贼, 不過(guò)還不夠好;能不能再安裝的時(shí)候就提前把要解釋的字節(jié)碼翻譯好奥吩? 內(nèi)存允許的話哼蛆,答案是肯定的, ART 上面就這么干的霞赫, 這種方式叫做 AOT腮介,即提前編譯。所以我們會(huì)發(fā)現(xiàn) 5.0 以后安裝程序會(huì)比較慢端衰, 但運(yùn)行速度快了太多叠洗, 5.0 以后 Android 和 iOS 的差距越來(lái)越小了。
2013 年到 2014 這兩年旅东,移動(dòng)互聯(lián)網(wǎng)進(jìn)入了新一輪的爆發(fā)式增長(zhǎng)灭抑,真正把草莽叢生、野蠻生長(zhǎng)演繹到了極致抵代,記得我在《一個(gè)程序員的運(yùn)氣》這篇文章中講過(guò)一個(gè)故事:一個(gè)在 2010 年底還在白石洲和我同學(xué)一起住農(nóng)民房腾节、擠公交的師兄,2014 年的時(shí)候已經(jīng)是身價(jià)千萬(wàn)的副總了荤牍; 同一年案腺,另一個(gè)公司的年終時(shí)候在樓下擺滿了奧迪作為年終獎(jiǎng),它就是 UC康吵。經(jīng)過(guò)兩三年的瘋狂發(fā)展救湖,生活的方方面面都可以在手機(jī)上進(jìn)行了,各種 o2o 應(yīng)用打得不可開(kāi)交涎才,打的不用再去馬路邊等著、超市到路邊攤都不再需要掏現(xiàn)金、外賣隨叫隨到耍铜,移動(dòng)互聯(lián)網(wǎng)真正改變了人民的生活方式…
這個(gè)時(shí)候整個(gè)行業(yè)需要從零到一開(kāi)發(fā) APP 機(jī)會(huì)少了很多了邑闺,到 2015 年的時(shí)候很多創(chuàng)業(yè)公司第一步想到的不是要開(kāi)發(fā)一個(gè) APP ,而是先開(kāi)一個(gè)微信公眾號(hào)棕兼。而這個(gè)時(shí)候 APP 端的開(kāi)發(fā)模式也慢慢在發(fā)生變化陡舅,各種動(dòng)畫開(kāi)源庫(kù)、網(wǎng)絡(luò)開(kāi)源庫(kù)不說(shuō)伴挚,原生開(kāi)發(fā)已經(jīng)相當(dāng)成熟了靶衍,熱更新插件化開(kāi)發(fā)也初出鋒芒,摩爾定律的作用下茎芋,硬件性能上來(lái)了颅眶,H5 也越來(lái)越多的分擔(dān)了頁(yè)面任務(wù),Android 開(kāi)發(fā)進(jìn)入混合開(kāi)發(fā)時(shí)代田弥。
提高效率涛酗、解放雙手是人類永恒的追求,程序員的理想就是要干到自己“沒(méi)活干”偷厦。2015 年底 facebook 推出 React Native商叹,跨平臺(tái)、動(dòng)態(tài)性和性能達(dá)到雙平衡只泼,我也第一時(shí)間研究并寫了 demo剖笙,發(fā)現(xiàn)上手也快,這種 web 化的開(kāi)發(fā)方式请唱、原生化的體驗(yàn)一定是趨勢(shì)弥咪,js 再次發(fā)光發(fā)熱。2016 年插件化框架徹底成熟籍滴,沒(méi)過(guò)多久酪夷,阿里的 Weex 發(fā)布,和 RN 如出一轍孽惰,Android 開(kāi)發(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ì)花這么多成本去開(kāi)發(fā)一個(gè)原生的 App 嗎?而且這個(gè)時(shí)候各個(gè)領(lǐng)域嘲叔、細(xì)分領(lǐng)域刮分已經(jīng)完成亡呵,開(kāi)發(fā)新 App 的機(jī)會(huì)真的沒(méi)有多少了。 如今小程序自己形成氣候硫戈,各家 App 都想仗著平臺(tái)和流量做自己的航母锰什,都要做自己的小程序,真是畸形丁逝,從統(tǒng)一的角度看汁胆,我還是希望快應(yīng)用能成。
隨著 RN霜幼、Weex嫩码、小程序等前端技術(shù)的出現(xiàn),技術(shù)發(fā)展又完成了一個(gè)輪回辛掠,在摩爾定律作用下谢谦,歷史是如此的相似。還記得那個(gè)曾經(jīng)差點(diǎn)要了微軟命的瀏覽器公司嗎萝衩,你操作系統(tǒng)很牛逼回挽,但是流量入口都在我這,微軟也感覺(jué)到了不妙猩谊,后來(lái)才出現(xiàn)了 IE 瀏覽器千劈,IE 瀏覽器出現(xiàn)后微軟內(nèi)部也開(kāi)始了系統(tǒng)派和瀏覽器派兩個(gè)派系曠日持久的斗爭(zhēng),最終系統(tǒng)派獲勝了牌捷,不知道這是不是后來(lái)微軟在新互聯(lián)網(wǎng)時(shí)代衰敗的原因墙牌!移動(dòng)互聯(lián)網(wǎng)和PC互聯(lián)網(wǎng)的發(fā)展軌跡太像了,只不過(guò)移動(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ì)如雨后春筍,直到李笑來(lái)的一段錄音流出克懊,感覺(jué)大家都被這場(chǎng)“革命”的資本家當(dāng)傻逼使了忱辅,著實(shí)為這把大火澆了一盆水七蜘。說(shuō)區(qū)塊鏈會(huì)比曾經(jīng)的互聯(lián)網(wǎng)革命還要猛烈,我覺(jué)得有點(diǎn)喧賓奪主了耕蝉,區(qū)塊鏈只是互聯(lián)網(wǎng)這個(gè)土壤上長(zhǎng)出來(lái)的一根藤崔梗,只會(huì)在有限領(lǐng)域發(fā)揮很好的作用。技術(shù)上看垒在,區(qū)塊鏈不是什么新技術(shù),是密碼學(xué)扔亥、分布式场躯、p2p等技術(shù)結(jié)合經(jīng)濟(jì)學(xué)在特定領(lǐng)域的應(yīng)用。如果你本身在密碼學(xué)旅挤、安全領(lǐng)域或分布式開(kāi)發(fā)領(lǐng)域有經(jīng)驗(yàn)踢关,轉(zhuǎn)區(qū)塊鏈開(kāi)發(fā)又有何難?換個(gè)賽道開(kāi)車而已粘茄。不過(guò)據(jù)我所知的 Android 客戶端開(kāi)發(fā)签舞,95% 是沒(méi)有機(jī)會(huì)也沒(méi)自主去從事或深入研究過(guò)這方面的技術(shù),所以基本認(rèn)定區(qū)塊鏈不是 Android 開(kāi)發(fā)的下半場(chǎng)柒瓣,轉(zhuǎn)崗搞區(qū)塊鏈優(yōu)勢(shì)不大儒搭。
小程序
RN、Weex芙贫、小程序出來(lái)的時(shí)候搂鲫,我都有研究過(guò),并且能輕易上手磺平,作為一名 Android 原生開(kāi)發(fā)的我都能輕易上手魂仍,更不用說(shuō)那些前端工程師了,而且現(xiàn)在各家小程序的上層開(kāi)發(fā)技術(shù)在我看來(lái)都是快消品拣挪,五年擦酌、十年后他們還在么?當(dāng)然如果我們能抽象一下各家小程序背后的技術(shù)本質(zhì)菠劝,例如深入研究 JS 執(zhí)行引擎原理赊舶、瀏覽器內(nèi)核等,那你又管他五年后XX小程序還是WW小程序呢闸英?肯定離不開(kāi)這些技術(shù)本質(zhì)锯岖,這一點(diǎn)很多前端小伙伴一定比我們終端小伙伴玩的溜。
人工智能
人工智能并不是什么新概念了甫何,可以說(shuō)自計(jì)算機(jī)誕生就有人思考人工智能的問(wèn)題了出吹,不過(guò)人工智能的概念是在 1956 年夏天、美國(guó)達(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)勝國(guó)際象棋大師、1997 年比爾蓋茨的智能化豪宅建成炒考,推進(jìn)智能家居的概念誕生可缚、近些年 Google 的 AlphaGo、無(wú)人無(wú)人車等斋枢,語(yǔ)音帘靡、圖像識(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),人工智能成了“兵家必爭(zhēng)之地”戈次,BAT 等互聯(lián)網(wǎng)巨頭都紛紛成了 AI 實(shí)驗(yàn)室…
人工智能的基礎(chǔ)是數(shù)據(jù)和算法轩勘,而數(shù)據(jù)又必須基于連接獲取,需要萬(wàn)物聯(lián)網(wǎng)朝扼,強(qiáng)大的數(shù)據(jù)加算法作為神經(jīng)中樞赃阀,各種各樣的終端設(shè)備就是神經(jīng)末梢,神經(jīng)末梢感知數(shù)據(jù)通過(guò)聯(lián)網(wǎng)傳遞到中樞擎颖,神經(jīng)中樞在越來(lái)越多的數(shù)據(jù)喂養(yǎng)下反過(guò)來(lái)更好的為各個(gè)終端提供更精確的決策和服務(wù)榛斯,這就是馬云爸爸說(shuō)過(guò)的 DT 時(shí)代,2018 年搂捧,我們從 IT 時(shí)代進(jìn)入了 DT 時(shí)代驮俗,紅衣教主周鴻祎 2013 年的時(shí)候就說(shuō)過(guò)未來(lái)的手機(jī)硬件一定是沒(méi)有利潤(rùn)的,甚至揚(yáng)言要做免費(fèi)的手機(jī)允跑,通過(guò)軟件增值來(lái)賺錢王凑,而在 DT 時(shí)代這一點(diǎn)將會(huì)更加明顯,萬(wàn)物聯(lián)網(wǎng)的終端硬件一定不是盈利點(diǎn)聋丝,真正的價(jià)值還是在數(shù)據(jù)和服務(wù)索烹。作為多年的 Android 開(kāi)發(fā),我也一直在思考在這個(gè)時(shí)代弱睦,我們的競(jìng)爭(zhēng)力在哪里百姓?近年大數(shù)據(jù)工程師、算法工程師比較吃香况木,終端開(kāi)發(fā)有必要轉(zhuǎn)算法嗎垒拢?如果你抱著五年十年長(zhǎng)時(shí)間打算旬迹,我到覺(jué)得未嘗不可。不過(guò)我覺(jué)得如果對(duì) Android 系統(tǒng)研究的足夠深入求类,這個(gè)時(shí)代依然還是我們的時(shí)代奔垦,萬(wàn)物聯(lián)網(wǎng),一定會(huì)需要一大波終端工程師尸疆,而未來(lái)的智能設(shè)備一定需要離線算法能力椿猎,終端要承擔(dān)一部分算法,到時(shí)候我們能發(fā)揮的空間更大仓技。
如何在下半場(chǎng)走得更遠(yuǎn)
無(wú)論是上半場(chǎng)還是下半場(chǎng)鸵贬,我們只是換了個(gè)現(xiàn)場(chǎng)而已,在我們一生所學(xué)的本領(lǐng)中脖捻,有些換了個(gè)戰(zhàn)場(chǎng)就不能用了,有些還能繼續(xù)使用兆衅。
說(shuō)到這個(gè)地沮, 我想起了有個(gè)前輩說(shuō)的一個(gè)概念:知識(shí)衰竭周期,這里我拓展為技能衰竭周期羡亩。我們一身中所學(xué)習(xí)的技能摩疑,有的很快就過(guò)時(shí),稱之為衰竭畏铆,有的技能十年雷袋、百年都不過(guò)時(shí),這里有個(gè)最鮮明對(duì)比: 研究心血管的醫(yī)生和 fash 程序員辞居,醫(yī)生完全不用擔(dān)心人體心血管結(jié)構(gòu)會(huì)變化而自己的技能經(jīng)驗(yàn)會(huì)淘汰楷怒,而十年前比較火的 flash 開(kāi)發(fā)技術(shù)如今快面臨淘汰了,所以說(shuō)學(xué)醫(yī)的普片越老越吃香瓦灶,而我們程序員不得不不斷學(xué)習(xí)鸠删。既然要學(xué)習(xí),我們也考慮下成本和收益贼陶,多花些心思在衰竭周期較長(zhǎng)的知識(shí)刃泡、技能上。
從上到下衰竭周期越長(zhǎng)碉怔,從下到上變化越多同時(shí)短期內(nèi)的需求越多烘贴。長(zhǎng)遠(yuǎn)來(lái)看,越是底層的東西越值得我們?nèi)パ芯看殡剩讓拥母忝靼琢私白伲蠈幼兓俣喽寄芎芸焐鲜郑圆蛔儜?yīng)萬(wàn)變趴樱。以上圖片是我個(gè)人 YY 的馒闷,一定不全面酪捡,但能表達(dá)一個(gè)意思:技術(shù)服務(wù)業(yè)務(wù), 越是上層的技術(shù)越受制于業(yè)務(wù)纳账,業(yè)務(wù)千變?nèi)f化逛薇,上層的技術(shù)形態(tài)也就千變?nèi)f化。