2017 年節點——我的技術投資學習策略:超越前端、物聯網、事件驅動

Phodal發表於2018-01-06

軟體開發不是一份穩定的工作:每年都會湧現一個又一個新的技術,每隔幾年都會出現一些革命性的技術。儘管從程式碼、表現及差異上來看,新技術和舊的技術有一些概念上的相似,但是在使用的過程中,仍然是需要花費時間去學習的。

除了,加深自己對現有一些語言、技術、軟體工程的領域深度。為了保持一定的技術洞見,每年我們都會學習一些新的技術,使用一些新的技術棧。因此,這篇文章就是介紹一些我對於新技術的感受,以及在這一年學習中的一些經驗。

本文主要包含以下內容:

  • 回顧前端:超越互動
  • 回顧移動開發
  • 技術投資策略
  • 物聯網與去中心化
  • AI 與技術成熟度
  • Serverless 與事件驅動
  • 區塊鏈評估

(PS:本文的閱讀時間大概 10 分鐘)

回顧前端:超越互動

年初,我在寫電子書《我的職業是前端工程師》的時候,已經 “欽定” 了 React、Angular(沒有.js)、Vue 作為未來前端開發的主流趨勢。在國內來說,還是以 Vue 為主,Vue 好上手,但是不都是所有的使用者都是小白 :) 。但是作為一個前端開發人員,你把時間投資在 React 和 Angular 上,在未來你會有更大的贏面。

Facebook 一系的 React,還有 React Native 和 React VR,未來可能還會有 React Game。Angular 受奧斯本效應的影響,採用程度受到一定的影響。在目前來看,對於開發人員的主要成長得益於 TypeScript,對於專案的優勢主要靜態型別使得程式碼更加強壯。

可是這一年 AI 的火熱,讓我開發思考 AI 帶來的一些互動上的變化。現在,我們所指的前端多數是一些 Web、移動端相關的 UI 開發,其本質就是與使用者互動。諸如前幾年火熱的虛擬現實、智慧音響,都是一個互動的新入口。

視覺化仍然是人類最好的獲取資料的方式。可當使用者大量的日常工作,被 AI 自動化之後,有些工作就變得有些多餘。如你出門前要看的天氣,以決定穿什麼衣服,它都可以由計算機算出來。帶不帶雨傘,都可以由雨傘提醒你。如 Amazon 設計的 Dash Button,可以讓你不需要任何的 UI 就可以購買日常用品。

回顧移動開發

今年,我在工作上主要做的都是移動開發相關的工作,從基於 Ionic 與 Cordova 的混合應用,到嵌入 WebView 到 React Native,再到年底的 Android 原生應用,中間寫了一些 Cordova 和 React Native 的 Android、iOS 外掛。也算是見證了移動應用的不同技術選型,成為了 3/4 個移動應用開發,對整個移動端的技術有所瞭解。

在最近幾年裡,原生移動應用開發沒有像過去那麼火熱。一來是,受到混合應用和 React Native 的影響;二來是,移動端的開發技術已經趨於成熟;

儘管在年初,看到越來越多的原生應用開發人員正在轉向 React Native。過去,我們認為的作業系統市場份額是這樣的:

桌面作業系統份額

但是實際上,在討論市場份額的時候已經是這樣了:

總的作業系統份額

以 VR、AR 和 AI 的技術趨勢來看,移動平臺才是未來的重點——除非有更好的平臺出現。觸手可及的技術,擁有更多的可能性,也擁有更多的資料及美好的未來。

技術投資策略

(PS:在這裡,所謂的技術投資是指,在一定時期內向一定的新領域投放時間來學習新技術。)

新的技術每天都在不斷地湧現,很多就是黑天鵝一樣看不出。並且,一來我們已經習慣了新的輪子的產生,二來我們也沒有那麼多的精力去關心每一個新技術。可是當有一些技術在不斷被提及被應用的時候,你就差不多應該關注、學習、採用了。

如我在年初看到那一本《灰犀牛》:灰犀牛體型笨重、反應遲緩,你能看見它在遠處,卻毫不在意,一旦它向你狂奔而來,定會讓你猝不及防,直接被撲倒在地。你明明看得見,新的趨勢在那裡,卻固執的不肯去了解。那麼,未來你就輕鬆地進入了中午危機。

技術投資

在 Gartner 的技術曲線上,定義了五個階段:科技誕生的促動期、過高期望的峰值、泡沫化的底谷期、穩步爬升的光明期、實質生產的高峰期。對於個人來說,這個技術曲線就沒有那麼複雜。

成為早期投入者

對於一個技術人員來說,這個流程就比較簡單了。通常來說,作為一個初入這個行業幾年的 “新人” 來說,我們是沒有經驗、能力去開擴一個新的領域。這時成為早期投資者,可能就是最早期的選擇了。

在新技術的早期就採用它,是一件相當有風險的事,也可能會有相當大的收益。新技術在早期充滿了不確認性,如果你押錯了,那麼你在這段時間的時間可能就白費了。因此,一般是到一個新的技術、概念出現一段時間後,去填這些相關的坑。

如我在這一年進入 Serverless 的坑一樣,雖然有一些晚,但是好在國內的雲服務產商的服務還不怎麼行。通過使用感受、社群及 Google Trends 來看,來看看是否押錯地方。

在光明期前採用

通常意味著,這個新技術棧還有很多坑。但是,大家都認可它是一個有前途的技術。如在今年被大規模採用(淘寶、QQ 等,有一些因為版權已經換坑了)的 React Native 就是一個很好的例子。

一般來說,經歷了一些大公司的踩坑,以及網上的一些踩坑經驗,那麼就意味著採用它已經沒有多少問題了——前提是你已經做好了技術儲備。這個時候你就可以為了今年的 KPI,去說服你的領導了。我們應該這麼做,xx 公司都已經上線了,而且這些 blabla 的優勢很明顯。

跟隨專案使用

當一個新技術的採用,已經在市場上達成共識。那麼,也不要再採用舊的技術了。

到了今天,前端的單頁面應用已經是 React、Angular、Vue 的天下了。這時要開發一個複雜的前端應用,那麼你應該從這些主流的框架中去選擇,而不是採用早期、過期(已經不維護)的技術了。除非,你們是一家大公司,有自己的輪子。

當然,只在該用某技術的時候,才在專案上使用新技術。對於一些簡單的頁面,jQuery + Bootstrap 還是萬能的。為了使用新技術,而在專案上使用,有時候容易造成問題。

物聯網與去中心化

在這一年裡,為 InfoQ 編寫《物聯網週報》的時候,我花費了大量的時間在索引網際網路上的 IoT 相關內容。隨之也翻譯了一系列的文章,也有了 “玩點什麼” 網站 、APP和小程式,其目的主要用於儲備技術。通過翻譯一些物聯網及前沿的技術實踐——持續關注某一領域,可以通過翻譯相關的文章來投資。將一些國內沒有的,又可能在未來用到的技術翻譯成了中文,再增加一些提升 SEO 提名的文章。(PS:因為在我的技術部落格)上,650+ 的部落格大部分都是原創的技術筆記,所以不打算放在我的部落格上——同時,也可以避免版權帶來的問題。)

除了,我大學學的電子資訊工程;還有一點,硬體是虛擬世界與現實世界的介面,而物聯網則可以讓我們真實的、從遠端訪問世界的各個角落。於是,在年中的時候,我花費時間去研究各式各樣的智慧家居系統,也有了我的 smart-home 專案。

當自己擅長的技術,有一些新的突破,那麼就應該去學習它。

2017 年裡,IoT 領域的技術趨勢,已經在不斷地結合各種時髦的技術,如:

他們解決了一些嵌入式裝置的自身缺陷,不過在一年裡,安全仍然是這方面的主流考慮

當一個流行的技術能在 PC 上執行,它也終將在智慧手機、Raspberry Pi 這一類小型計算裝置上執行。

在數字化浪潮不斷擴張的今天,物聯網作為一個底層的技術合集,越來越受關注。但是,這不意味著它會馬上火爆起來,只是我們可以看到它在不斷地被應用

在這上面花時間,不一定有收益,但是總覺得自己改變了什麼

AI 與技術成熟度

AI 火熱的這一年,在為玩點什麼做應用的過程中,便想結合一些機器學習的技術。所以我又複習了一下機器學習,順便打算 GET 一下深度學習的技能。也就有了玩點什麼的推薦系統 ,也應用上了 jieba 分詞,加上之前對於樸素貝葉斯、聚類等的研究。發現一般的機器學習,對於我這種已經遠離高等數學的人來說,還不算太難,概念上基本能理解得差不多——主要是這些演算法,都能應用到一些真實的場景。

於是,我打算試水一下深度學習。然後,我發現我 TM 的資料都沒有,下載個資料都要半天。再看看書上的理論,我發現我抽不到足夠的空餘時間來學習——我的意思是,足夠集中的學習時間。還有一個問題是,沒有資料——儘管網上已經有大量的公開資料,但是這些公開資料多數是英語的。這些基於英語語言的資料,會導致出現的演算法以英語為主,導致演算法本身難以採用,這一類問題最常見於 NLP(自然語言學習)。

假使我將一個週末的兩天 + 每天三個小時的晚上時間都投在上面,那麼從短期來看收益太少——我可以花這些時間,強化我在其它領域的知識。

好在深度學習的 API,也很容易上手。這一點與我之間在試水智慧音響有點類似,實現一個簡單的智慧音響本身並不需要太多的新演算法——利用一些現有的公開 API、公開演算法,我們可以輕鬆也用深度學習做一個音響。但是我們缺乏足夠的音訊資料,它將會導致我們無法進入下一步。

這就是為什麼 Mozilla 會推出 Common Voice Project 專案的原因,沒有足夠的財力就不會有足夠的資料;同理於,今年阿里在雙 11 送的大量 99 元的天貓精靈一樣,只有大量的資料才能造出 AI。只能有足夠的資料或者財富,才能擁有與之匹配的人工智慧

Serverless 與事件驅動

在第四個季度裡,我花費了大量的時間在學習 Serverless 系統,編寫大量的 Serverless 應用。有興趣的同學可以瞭解 花了 1000G,我終於弄清楚了 Serverless 是什麼,以及基於 Serverless 架構的 簡單日誌系統 molog表單系統 moform,這些 Serverless 應用都可以在一天內開發、上線。

Serverless 事件驅動的特性,使得它適合物聯網、人工智慧、資料分析等場景。其按需付費,又能讓我愉快地(畢竟窮)各種 Serverless 應用。

如上所示,Serverless 將是一種新的技術架構趨勢。而 Serverless 本身算不上一個新的技術,只是 FaaS 結合一堆現有的技術組成的技術架構。因此我將學習 Serverless 的行為,定義為一種 “短平快” 的學習投資

由於國內的內容匱乏,我採用的策略是:邊寫 DEMO,邊寫文章、編寫自己的 Serverless 應用、寫一系列的總結文章、整理成電子書。這樣一來在 2018 年,我的部落格可能就會受長尾效應的影響,帶來額外的更多流量。

區塊鏈評估

我對區塊鏈採用的是評估,也就是還沒有進入我的採用、Demo 期——主要是因為區塊鏈技術採用的領域有限。早期我在思考在邊緣計算、物聯網領域引入,但是場景有限。不過,在未來我應該會嘗試引入這個技術的。

常規的物聯網系統都是中心化的,採集資料、加工資料、儲存資料、視覺化資料、預測資料,它也不需要擔心中間的資料修改。如果以一個感測器採集點,作為一個節點,採用區塊鏈的儲存成本過高。如果以一個區域作為結點,它也不需要擔心其它結點的資料的修改問題。

只當每一個節點自身需要記錄變更的時候,那麼這個物聯網應用才適合採用區塊鏈技術,如物流場景等等。

又或者是,在你的智慧家居系統的每一個控制節點上,都記錄每一次控制的變化。如你使用手機控制了檯燈的開和關,這個資料就會同步到你的手機上。問題是,控制個燈都需要記錄一下的場景,這可能是監獄吧?

或許,我還需要一個區塊鏈的 markdown 同步工具,而不是使用 GitHub 或者各種雲筆記。這樣我的 markdown-improve 計劃,又多了一個新的成員了。

結論

從上述的學習經歷來看,學習技術的期限主要是:

  • 短期學習未來將採用的技術
  • 中期瞭解一些新的技術知識
  • 長期接觸自己喜歡的技術

不過,簡單的來說,這一年的經驗就是:

  • 持續關注某一領域,可以通過翻譯相關的文章來投資
  • 當自己擅長的技術,有一些新的突破,那麼就應該去學習它。
  • 如果一個與自己工作相關的技術是未來的趨勢,那麼請擁抱它。
  • 如果有一個新的技術可以影響到你的生活,不妨去學學它。

相關文章