軟件開(kāi)發(fā)不是一份穩(wěn)定的工作:每年都會(huì)涌現(xiàn)一個(gè)又一個(gè)新的技術(shù),每隔幾年都會(huì)出現(xiàn)一些革命性的技術(shù)。盡管從代碼、表現(xiàn)及差異上來(lái)看,新技術(shù)和舊的技術(shù)有一些概念上的相似,但是在使用的過(guò)程中,仍然是需要花費(fèi)時(shí)間去學(xué)習(xí)的。
除了,加深自己對(duì)現(xiàn)有一些語(yǔ)言、技術(shù)、軟件工程的領(lǐng)域深度。為了保持一定的技術(shù)洞見(jiàn),每年我們都會(huì)學(xué)習(xí)一些新的技術(shù),使用一些新的技術(shù)棧。因此,這篇文章就是介紹一些我對(duì)于新技術(shù)的感受,以及在這一年學(xué)習(xí)中的一些經(jīng)驗(yàn)。
本文主要包含以下內(nèi)容:
回顧前端:超越交互
回顧移動(dòng)開(kāi)發(fā)
技術(shù)投資策略
物聯(lián)網(wǎng)與去中心化
AI 與技術(shù)成熟度
Serverless 與事件驅(qū)動(dòng)
區(qū)塊鏈評(píng)估
(PS:本文的閱讀時(shí)間大概 10 分鐘)
回顧前端:超越交互年初,我在寫(xiě)電子書(shū)《我的職業(yè)是前端工程師》的時(shí)候,已經(jīng) “欽定” 了 React、Angular(沒(méi)有.js)、Vue 作為未來(lái)前端開(kāi)發(fā)的主流趨勢(shì)。在國(guó)內(nèi)來(lái)說(shuō),還是以 Vue 為主,Vue 好上手,但是不都是所有的用戶(hù)都是小白 :) 。但是作為一個(gè)前端開(kāi)發(fā)人員,你把時(shí)間投資在 React 和 Angular 上,在未來(lái)你會(huì)有更大的贏面。
Facebook 一系的 React,還有 React Native 和 React VR,未來(lái)可能還會(huì)有 React Game。Angular 受奧斯本效應(yīng)的影響,采用程度受到一定的影響。在目前來(lái)看,對(duì)于開(kāi)發(fā)人員的主要成長(zhǎng)得益于 TypeScript,對(duì)于項(xiàng)目的優(yōu)勢(shì)主要靜態(tài)類(lèi)型使得代碼更加強(qiáng)壯。
可是這一年 AI 的火熱,讓我開(kāi)發(fā)思考 AI 帶來(lái)的一些交互上的變化。現(xiàn)在,我們所指的前端多數(shù)是一些 Web、移動(dòng)端相關(guān)的 UI 開(kāi)發(fā),其本質(zhì)就是與用戶(hù)交互。諸如前幾年火熱的虛擬現(xiàn)實(shí)、智能音箱,都是一個(gè)交互的新入口。
可視化仍然是人類(lèi)最好的獲取數(shù)據(jù)的方式。可當(dāng)用戶(hù)大量的日常工作,被 AI 自動(dòng)化之后,有些工作就變得有些多余。如你出門(mén)前要看的天氣,以決定穿什么衣服,它都可以由計(jì)算機(jī)算出來(lái)。帶不帶雨傘,都可以由雨傘提醒你。如 Amazon 設(shè)計(jì)的 Dash Button,可以讓你不需要任何的 UI 就可以購(gòu)買(mǎi)日常用品。
回顧移動(dòng)開(kāi)發(fā)今年,我在工作上主要做的都是移動(dòng)開(kāi)發(fā)相關(guān)的工作,從基于 Ionic 與 Cordova 的混合應(yīng)用,到嵌入 WebView 到 React Native,再到年底的 Android 原生應(yīng)用,中間寫(xiě)了一些 Cordova 和 React Native 的 Android、iOS 插件。也算是見(jiàn)證了移動(dòng)應(yīng)用的不同技術(shù)選型,成為了 3/4 個(gè)移動(dòng)應(yīng)用開(kāi)發(fā),對(duì)整個(gè)移動(dòng)端的技術(shù)有所了解。
在最近幾年里,原生移動(dòng)應(yīng)用開(kāi)發(fā)沒(méi)有像過(guò)去那么火熱。一來(lái)是,受到混合應(yīng)用和 React Native 的影響;二來(lái)是,移動(dòng)端的開(kāi)發(fā)技術(shù)已經(jīng)趨于成熟;
盡管在年初,看到越來(lái)越多的原生應(yīng)用開(kāi)發(fā)人員正在轉(zhuǎn)向 React Native。過(guò)去,我們認(rèn)為的操作系統(tǒng)市場(chǎng)份額是這樣的:
但是實(shí)際上,在討論市場(chǎng)份額的時(shí)候已經(jīng)是這樣了:
以 VR、AR 和 AI 的技術(shù)趨勢(shì)來(lái)看,移動(dòng)平臺(tái)才是未來(lái)的重點(diǎn)——除非有更好的平臺(tái)出現(xiàn)。觸手可及的技術(shù),擁有更多的可能性,也擁有更多的數(shù)據(jù)及美好的未來(lái)。
技術(shù)投資策略(PS:在這里,所謂的技術(shù)投資是指,在一定時(shí)期內(nèi)向一定的新領(lǐng)域投放時(shí)間來(lái)學(xué)習(xí)新技術(shù)。)
新的技術(shù)每天都在不斷地涌現(xiàn),很多就是黑天鵝一樣看不出。并且,一來(lái)我們已經(jīng)習(xí)慣了新的輪子的產(chǎn)生,二來(lái)我們也沒(méi)有那么多的精力去關(guān)心每一個(gè)新技術(shù)。可是當(dāng)有一些技術(shù)在不斷被提及被應(yīng)用的時(shí)候,你就差不多應(yīng)該關(guān)注、學(xué)習(xí)、采用了。
如我在年初看到那一本《灰犀牛》:灰犀牛體型笨重、反應(yīng)遲緩,你能看見(jiàn)它在遠(yuǎn)處,卻毫不在意,一旦它向你狂奔而來(lái),定會(huì)讓你猝不及防,直接被撲倒在地。你明明看得見(jiàn),新的趨勢(shì)在那里,卻固執(zhí)的不肯去了解。那么,未來(lái)你就輕松地進(jìn)入了中午危機(jī)。
在 Gartner 的技術(shù)曲線上,定義了五個(gè)階段:科技誕生的促動(dòng)期、過(guò)高期望的峰值、泡沫化的底谷期、穩(wěn)步爬升的光明期、實(shí)質(zhì)生產(chǎn)的高峰期。對(duì)于個(gè)人來(lái)說(shuō),這個(gè)技術(shù)曲線就沒(méi)有那么復(fù)雜。
成為早期投入者對(duì)于一個(gè)技術(shù)人員來(lái)說(shuō),這個(gè)流程就比較簡(jiǎn)單了。通常來(lái)說(shuō),作為一個(gè)初入這個(gè)行業(yè)幾年的 “新人” 來(lái)說(shuō),我們是沒(méi)有經(jīng)驗(yàn)、能力去開(kāi)擴(kuò)一個(gè)新的領(lǐng)域。這時(shí)成為早期投資者,可能就是最早期的選擇了。
在新技術(shù)的早期就采用它,是一件相當(dāng)有風(fēng)險(xiǎn)的事,也可能會(huì)有相當(dāng)大的收益。新技術(shù)在早期充滿(mǎn)了不確認(rèn)性,如果你押錯(cuò)了,那么你在這段時(shí)間的時(shí)間可能就白費(fèi)了。因此,一般是到一個(gè)新的技術(shù)、概念出現(xiàn)一段時(shí)間后,去填這些相關(guān)的坑。
如我在這一年進(jìn)入 Serverless 的坑一樣,雖然有一些晚,但是好在國(guó)內(nèi)的云服務(wù)產(chǎn)商的服務(wù)還不怎么行。通過(guò)使用感受、社區(qū)及 Google Trends 來(lái)看,來(lái)看看是否押錯(cuò)地方。
在光明期前采用通常意味著,這個(gè)新技術(shù)棧還有很多坑。但是,大家都認(rèn)可它是一個(gè)有前途的技術(shù)。如在今年被大規(guī)模采用(淘寶、QQ 等,有一些因?yàn)榘鏅?quán)已經(jīng)換坑了)的 React Native 就是一個(gè)很好的例子。
一般來(lái)說(shuō),經(jīng)歷了一些大公司的踩坑,以及網(wǎng)上的一些踩坑經(jīng)驗(yàn),那么就意味著采用它已經(jīng)沒(méi)有多少問(wèn)題了——前提是你已經(jīng)做好了技術(shù)儲(chǔ)備。這個(gè)時(shí)候你就可以為了今年的 KPI,去說(shuō)服你的領(lǐng)導(dǎo)了。我們應(yīng)該這么做,xx 公司都已經(jīng)上線了,而且這些 blabla 的優(yōu)勢(shì)很明顯。
跟隨項(xiàng)目使用當(dāng)一個(gè)新技術(shù)的采用,已經(jīng)在市場(chǎng)上達(dá)成共識(shí)。那么,也不要再采用舊的技術(shù)了。
到了今天,前端的單頁(yè)面應(yīng)用已經(jīng)是 React、Angular、Vue 的天下了。這時(shí)要開(kāi)發(fā)一個(gè)復(fù)雜的前端應(yīng)用,那么你應(yīng)該從這些主流的框架中去選擇,而不是采用早期、過(guò)期(已經(jīng)不維護(hù))的技術(shù)了。除非,你們是一家大公司,有自己的輪子。
當(dāng)然,只在該用某技術(shù)的時(shí)候,才在項(xiàng)目上使用新技術(shù)。對(duì)于一些簡(jiǎn)單的頁(yè)面,jQuery + Bootstrap 還是萬(wàn)能的。為了使用新技術(shù),而在項(xiàng)目上使用,有時(shí)候容易造成問(wèn)題。
物聯(lián)網(wǎng)與去中心化在這一年里,為 InfoQ 編寫(xiě)《物聯(lián)網(wǎng)周報(bào)》的時(shí)候,我花費(fèi)了大量的時(shí)間在索引互聯(lián)網(wǎng)上的 IoT 相關(guān)內(nèi)容。隨之也翻譯了一系列的文章,也有了 “玩點(diǎn)什么” 網(wǎng)站 、APP和小程序,其目的主要用于儲(chǔ)備技術(shù)。通過(guò)翻譯一些物聯(lián)網(wǎng)及前沿的技術(shù)實(shí)踐——持續(xù)關(guān)注某一領(lǐng)域,可以通過(guò)翻譯相關(guān)的文章來(lái)投資。將一些國(guó)內(nèi)沒(méi)有的,又可能在未來(lái)用到的技術(shù)翻譯成了中文,再增加一些提升 SEO 提名的文章。(PS:因?yàn)樵谖业募夹g(shù)博客)上,650+ 的博客大部分都是原創(chuàng)的技術(shù)筆記,所以不打算放在我的博客上——同時(shí),也可以避免版權(quán)帶來(lái)的問(wèn)題。)
除了,我大學(xué)學(xué)的電子信息工程;還有一點(diǎn),硬件是虛擬世界與現(xiàn)實(shí)世界的接口,而物聯(lián)網(wǎng)則可以讓我們真實(shí)的、從遠(yuǎn)程訪問(wèn)世界的各個(gè)角落。于是,在年中的時(shí)候,我花費(fèi)時(shí)間去研究各式各樣的智能家居系統(tǒng),也有了我的?smart-home?項(xiàng)目。
當(dāng)自己擅長(zhǎng)的技術(shù),有一些新的突破,那么就應(yīng)該去學(xué)習(xí)它。
2017 年里,IoT 領(lǐng)域的技術(shù)趨勢(shì),已經(jīng)在不斷地結(jié)合各種時(shí)髦的技術(shù),如:
Serverless Framework 與 AWS IoT 構(gòu)建 Serverless 的花園監(jiān)控系統(tǒng)
Raspberry Pi 教程:在 Docker 上使用 Go 點(diǎn)亮 LED
Raspberry Pi 與 OpenFaaS 構(gòu)建 Serverless Kubernetes 集群
Raspberry Pi 自動(dòng)駕駛:使用 Keras 與 Tensorflow 構(gòu)建車(chē)道跟蹤自動(dòng)汽車(chē)
他們解決了一些嵌入式設(shè)備的自身缺陷,不過(guò)在一年里,安全仍然是這方面的主流考慮。
當(dāng)一個(gè)流行的技術(shù)能在 PC 上運(yùn)行,它也終將在智能手機(jī)、Raspberry Pi 這一類(lèi)小型計(jì)算設(shè)備上運(yùn)行。
在數(shù)字化浪潮不斷擴(kuò)張的今天,物聯(lián)網(wǎng)作為一個(gè)底層的技術(shù)合集,越來(lái)越受關(guān)注。但是,這不意味著它會(huì)馬上火爆起來(lái),只是我們可以看到它在不斷地被應(yīng)用。
在這上面花時(shí)間,不一定有收益,但是總覺(jué)得自己改變了什么。
AI 與技術(shù)成熟度AI 火熱的這一年,在為玩點(diǎn)什么做應(yīng)用的過(guò)程中,便想結(jié)合一些機(jī)器學(xué)習(xí)的技術(shù)。所以我又復(fù)習(xí)了一下機(jī)器學(xué)習(xí),順便打算 GET 一下深度學(xué)習(xí)的技能。也就有了玩點(diǎn)什么的推薦系統(tǒng)?,也應(yīng)用上了 jieba 分詞,加上之前對(duì)于樸素貝葉斯、聚類(lèi)等的研究。發(fā)現(xiàn)一般的機(jī)器學(xué)習(xí),對(duì)于我這種已經(jīng)遠(yuǎn)離高等數(shù)學(xué)的人來(lái)說(shuō),還不算太難,概念上基本能理解得差不多——主要是這些算法,都能應(yīng)用到一些真實(shí)的場(chǎng)景。
于是,我打算試水一下深度學(xué)習(xí)。然后,我發(fā)現(xiàn)我 TM 的數(shù)據(jù)都沒(méi)有,下載個(gè)數(shù)據(jù)都要半天。再看看書(shū)上的理論,我發(fā)現(xiàn)我抽不到足夠的空余時(shí)間來(lái)學(xué)習(xí)——我的意思是,足夠集中的學(xué)習(xí)時(shí)間。還有一個(gè)問(wèn)題是,沒(méi)有數(shù)據(jù)——盡管網(wǎng)上已經(jīng)有大量的公開(kāi)數(shù)據(jù),但是這些公開(kāi)數(shù)據(jù)多數(shù)是英語(yǔ)的。這些基于英語(yǔ)語(yǔ)言的數(shù)據(jù),會(huì)導(dǎo)致出現(xiàn)的算法以英語(yǔ)為主,導(dǎo)致算法本身難以采用,這一類(lèi)問(wèn)題最常見(jiàn)于 NLP(自然語(yǔ)言學(xué)習(xí))。
假使我將一個(gè)周末的兩天 + 每天三個(gè)小時(shí)的晚上時(shí)間都投在上面,那么從短期來(lái)看收益太少——我可以花這些時(shí)間,強(qiáng)化我在其它領(lǐng)域的知識(shí)。
好在深度學(xué)習(xí)的 API,也很容易上手。這一點(diǎn)與我之間在試水智能音箱有點(diǎn)類(lèi)似,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的智能音箱本身并不需要太多的新算法——利用一些現(xiàn)有的公開(kāi) API、公開(kāi)算法,我們可以輕松也用深度學(xué)習(xí)做一個(gè)音箱。但是我們?nèi)狈ψ銐虻囊纛l數(shù)據(jù),它將會(huì)導(dǎo)致我們無(wú)法進(jìn)入下一步。
這就是為什么 Mozilla 會(huì)推出 Common Voice Project 項(xiàng)目的原因,沒(méi)有足夠的財(cái)力就不會(huì)有足夠的數(shù)據(jù);同理于,今年阿里在雙 11 送的大量 99 元的天貓精靈一樣,只有大量的數(shù)據(jù)才能造出 AI。只能有足夠的數(shù)據(jù)或者財(cái)富,才能擁有與之匹配的人工智能。
Serverless 與事件驅(qū)動(dòng)在第四個(gè)季度里,我花費(fèi)了大量的時(shí)間在學(xué)習(xí) Serverless 系統(tǒng),編寫(xiě)大量的 Serverless 應(yīng)用。有興趣的同學(xué)可以了解?花了 1000G,我終于弄清楚了 Serverless 是什么,以及基于 Serverless 架構(gòu)的?簡(jiǎn)單日志系統(tǒng) molog、表單系統(tǒng) moform,這些 Serverless 應(yīng)用都可以在一天內(nèi)開(kāi)發(fā)、上線。
Serverless 事件驅(qū)動(dòng)的特性,使得它適合物聯(lián)網(wǎng)、人工智能、數(shù)據(jù)分析等場(chǎng)景。其按需付費(fèi),又能讓我愉快地(畢竟窮)各種 Serverless 應(yīng)用。
如上所示,Serverless 將是一種新的技術(shù)架構(gòu)趨勢(shì)。而 Serverless 本身算不上一個(gè)新的技術(shù),只是 FaaS 結(jié)合一堆現(xiàn)有的技術(shù)組成的技術(shù)架構(gòu)。因此我將學(xué)習(xí) Serverless 的行為,定義為一種 “短平快” 的學(xué)習(xí)投資。
由于國(guó)內(nèi)的內(nèi)容匱乏,我采用的策略是:邊寫(xiě) DEMO,邊寫(xiě)文章、編寫(xiě)自己的 Serverless 應(yīng)用、寫(xiě)一系列的總結(jié)文章、整理成電子書(shū)。這樣一來(lái)在 2018 年,我的博客可能就會(huì)受長(zhǎng)尾效應(yīng)的影響,帶來(lái)額外的更多流量。
區(qū)塊鏈評(píng)估我對(duì)區(qū)塊鏈采用的是評(píng)估,也就是還沒(méi)有進(jìn)入我的采用、Demo 期——主要是因?yàn)閰^(qū)塊鏈技術(shù)采用的領(lǐng)域有限。早期我在思考在邊緣計(jì)算、物聯(lián)網(wǎng)領(lǐng)域引入,但是場(chǎng)景有限。不過(guò),在未來(lái)我應(yīng)該會(huì)嘗試引入這個(gè)技術(shù)的。
常規(guī)的物聯(lián)網(wǎng)系統(tǒng)都是中心化的,采集數(shù)據(jù)、加工數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、可視化數(shù)據(jù)、預(yù)測(cè)數(shù)據(jù),它也不需要擔(dān)心中間的數(shù)據(jù)修改。如果以一個(gè)傳感器采集點(diǎn),作為一個(gè)節(jié)點(diǎn),采用區(qū)塊鏈的存儲(chǔ)成本過(guò)高。如果以一個(gè)區(qū)域作為結(jié)點(diǎn),它也不需要擔(dān)心其它結(jié)點(diǎn)的數(shù)據(jù)的修改問(wèn)題。
只當(dāng)每一個(gè)節(jié)點(diǎn)自身需要記錄變更的時(shí)候,那么這個(gè)物聯(lián)網(wǎng)應(yīng)用才適合采用區(qū)塊鏈技術(shù),如物流場(chǎng)景等等。
又或者是,在你的智能家居系統(tǒng)的每一個(gè)控制節(jié)點(diǎn)上,都記錄每一次控制的變化。如你使用手機(jī)控制了臺(tái)燈的開(kāi)和關(guān),這個(gè)數(shù)據(jù)就會(huì)同步到你的手機(jī)上。問(wèn)題是,控制個(gè)燈都需要記錄一下的場(chǎng)景,這可能是監(jiān)獄吧?
或許,我還需要一個(gè)區(qū)塊鏈的 markdown 同步工具,而不是使用 GitHub 或者各種云筆記。這樣我的?markdown-improve?計(jì)劃,又多了一個(gè)新的成員了。
結(jié)論從上述的學(xué)習(xí)經(jīng)歷來(lái)看,學(xué)習(xí)技術(shù)的期限主要是:
短期學(xué)習(xí)未來(lái)將采用的技術(shù)
中期了解一些新的技術(shù)知識(shí)
長(zhǎng)期接觸自己喜歡的技術(shù)
不過(guò),簡(jiǎn)單的來(lái)說(shuō),這一年的經(jīng)驗(yàn)就是:
持續(xù)關(guān)注某一領(lǐng)域,可以通過(guò)翻譯相關(guān)的文章來(lái)投資
當(dāng)自己擅長(zhǎng)的技術(shù),有一些新的突破,那么就應(yīng)該去學(xué)習(xí)它。
如果一個(gè)與自己工作相關(guān)的技術(shù)是未來(lái)的趨勢(shì),那么請(qǐng)擁抱它。
如果有一個(gè)新的技術(shù)可以影響到你的生活,不妨去學(xué)學(xué)它。
你說(shuō)呢?
來(lái),明年一起開(kāi)黑。
評(píng)論