Android 工程師的選擇
從事 Android 開發(fā)已經(jīng)有幾年的時(shí)光了,隨著移動(dòng)互聯(lián)網(wǎng)、智能手機(jī)紅利期的漸漸退去,移動(dòng)端市場趨于飽和,又受到人工智能、大數(shù)據(jù)和大前端趨勢的影響,再加上網(wǎng)上各種對移動(dòng)端不利的言論,網(wǎng)上的自媒體就愛制造焦慮博取眼球,年年唱衰 Android,2018年的 Google 大會(huì)中,Google 對 Android 更是只字不提,力推 Flutter。塞班系統(tǒng)的前車之鑒,讓我感到很焦慮。可怕的不是你的工作沒了,而是你的行業(yè)沒了。那么該如何選擇 Android 工程師的未來呢?
選擇方向
- 轉(zhuǎn)后端
后端開發(fā),經(jīng)久不衰,注重深度,并且 Android 與 Java 后端都是同使用 Java 語言,但轉(zhuǎn)后端開發(fā)等于徹底的轉(zhuǎn)行,資深的 Android 開發(fā)轉(zhuǎn)到后端,只會(huì)成為初級工程師,需要從頭開始,那么這幾年的努力豈不是白費(fèi)了?需要考慮到事件的成本。
- 轉(zhuǎn)人工智能
對于人工智能來說,近幾年新聞媒體大力宣傳、網(wǎng)上自媒體的過渡評價(jià),幾乎成為最熱門的崗位。但是人工智能不僅僅是學(xué)習(xí)一個(gè) Python 語言那么簡單。目前人工智能還沒有全面普及,還只是大公司的玩物,過幾年泡沫會(huì)不會(huì)破滅還難說,而且目前算法崗也開始慢慢飽和了,已經(jīng)不是可以無腦學(xué) AI 的時(shí)候了。同時(shí),我了解了下人工智能崗位的要求,基本都要求名校碩士,學(xué)歷的問題是制約很多人搞 AI 的最重要因素。
- 轉(zhuǎn)(大)前端
同樣的趨勢選擇,最終我選擇大前端,那么什么是大前端?我為什么要轉(zhuǎn)大前端呢?
什么是大前端
2017年,以餓了么為代表的一些企業(yè)開始提出大前端的概念。2018年,InfoQ 舉辦了首屆全球大前端技術(shù)大會(huì),在大會(huì)中將前后端分離、跨平臺和 PWA 等技術(shù)設(shè)立了專場,這次大會(huì)具有重要的意義,它預(yù)示了大前端時(shí)代的到來。
那么大前端是什么呢,直接來說,大前端是所有前端的總稱,最接近用戶的那一層都叫前端,比如 Android、iOS、Web、Watch、小程序等。
在企業(yè)的開發(fā)中會(huì)遇到這樣一個(gè)頭疼的問題。當(dāng)企業(yè)需要上線一個(gè)新產(chǎn)品時(shí),服務(wù)端只需要開發(fā)一次,但是面向用戶的客戶端也就是前端卻需要開發(fā)多個(gè)版本,比如 Android 版、iOS 版、H5 版、小程序版等。每一個(gè)版本的開發(fā)工作量都是無法復(fù)用的,這意味企業(yè)需要付出更多冗余的人力成本。這個(gè)時(shí)候問題就來了:有沒有一種技術(shù)可以同時(shí)適用于多個(gè)平臺呢?這種技術(shù)就是跨平臺技術(shù)。有了跨平臺技術(shù),各個(gè)平臺的差異性就被抹平了,開發(fā)者只需要一套技術(shù)棧就可以開發(fā)出適用于多個(gè)平臺的客戶端,這就是大前端生態(tài)中最重要的一環(huán)。
主流跨平臺方案
截止目前,主流的跨平臺方案有:ReactNative、Weex、微信小程序、PWA 和 Flutter
大前端趨勢展望
截至目前,跨平臺技術(shù)雖然已經(jīng)經(jīng)歷了幾年的發(fā)展和改進(jìn),但是已有的跨平臺方案都還有或多或少的不足。
ReactNative 和 Weex:執(zhí)行效率是硬傷,首頁不能用RN已是共識,而且目前在同一 Android 和 iOS 代碼方面尚存在不足。
Flutter:不支持線上熱修復(fù),和跨平臺方案天然的動(dòng)態(tài)化屬性不服,目前尚在 preview 階段,希望能夠盡快 release。
PWA:用純 Web 的方式統(tǒng)一三端,很好的 idea。但是需要借助 Google play Service 和瀏覽器支持,國外大部分 Android 手機(jī)和 iOS 的新版本都可以支持 PWA,但遺憾的是,國內(nèi)的瀏覽器很難統(tǒng)一支持 PWA,這還需要時(shí)間。
微信小程序:屬于微信內(nèi)的生態(tài)閉環(huán),更適合工具類和小游戲,一般都作為原生 APP 的延伸入口。
所以,目前尚不能分析出哪種技術(shù)是未來的趨勢,未來是否會(huì)出現(xiàn)新的跨平臺技術(shù)也無法得知。因此決定對已有的方案都做一下了解,達(dá)到入門水平,等以后某個(gè)跨平臺技術(shù)成熟后再做深入地研究。
總結(jié)
雖然跨平臺技術(shù)還不夠完美,但是大前端的趨勢是很明確的。對于我來說,需要學(xué)習(xí)一下 HTML、CSS、JavaScript、ES6、vue 和 react 等前端技術(shù)
所以,我選擇大前端作為未來三年的學(xué)習(xí)方向,將自己的學(xué)習(xí)時(shí)間作為劃分,七分進(jìn)階 Android,三分學(xué)習(xí)前端知識。只有這樣才能更好地適應(yīng)大前端的變革。