資深程序員解惑:Android發行多年移動App趨近飽和,Android開發還有好的前景嗎?能者居之!

前言

IT互聯網這個行業發展是特別快得,不管是什麼熱們的開發,開始都是比較火爆的,因爲招聘對技術要求都比較低,而且人才的短缺,自然薪資就比較的高。但是過了幾年以後,會這些技術的人越來越多,市場就慢慢的對技術水平和工作經驗的要求也越來越高,薪資和技術能力要求是相匹配的。

Android開發也是一樣,在市場缺少Android開發人才的時候,那時候的Android初級開發者工資都比較高,但是到了現在隨着Android開發者人才多起來以後,市場慢慢的也包含起來了。現在的一個Android初級開發工程師都比較難找到合適自己又薪資搞的工資。如果達到了Android高級開發工程師或者架構師的水平,這個是比較喫香。

進入Android行業幾年了,一直也很關注它的發展,畢竟這是自己喫飯的傢伙,也思考過現在的行市和未來的發展。關於移動App已經趨近飽和的問題,首先要明確兩個概念,一個是“喫香”,一個是“飽和”。

這兩個概念很好理解,但也要看針對什麼樣的人羣。對於剛剛培訓完(包括自學)還沒有實際開發經驗的人來說,這兩個概念代表着崗位缺口,android開發人員供不應求,工作就會很好找,那就是“喫香”,非“飽
和”,如果這樣理解這兩個詞的話,那麼就現在的市場行情來說,android已經不喫香了,大家可能也發現了,現在較之以前,工作比較難找,薪資水平也比以前底了,但這並不代表着android已經走入下坡路,只能說這是一個行業的正常發展,android的井噴期已經過去了,以往那種只要會點androi就能拿到高薪的日子已經一去不復返了,市場越來越理性化,不再一味的吸收,而是有選擇的吸收。

移動App趨近飽和的原因

現在的終端開發已經開始進入穩定期,在這個階段大廠壓力很大小廠更會收到擠壓,人們使用的App越來越固定,即使是大廠,幾年前平臺級應用發個Push就能引流幾十萬,現在這些的作用也越來越小。

1. 開發者的門檻越來越高:

小廠的機會少了,大廠的業務趨於穩定,短期內在移動端不會出現爆發性的增長,那隨之而來的就是移動端招人越來越理性,門檻水漲船高。這兩年看部門移動端校招,除了技術本身都很紮實以外,清一色985/211學霸+競賽成績+各種獎項+NB實習經歷,社招基本集中在國內主要的互聯網公司和幾大手機公司中。並且現在大部分公司受限於本身的業務規模和在移動端的投入,技術和國內主要互聯網公司的差距越來越大,換句話說,小公司生存會越來越困難,之後從小公司向大公司跳槽也會越來越困難。

2. 對開發者的要求越來越高:

小廠生存越來越困難,那勢必會對開發者提出更高的要求。相比之前,對於終端開發者的技術要求會越來越寬廣,最好是個多面手,是個大前端。大廠內部的壓力也非常大,數據想要有大幅度的提升也越來越困難,因此更多的方向,更多的需求也就在所難免。

現在的終端開發者處理的問題比之前更多更復雜,需要Cover的面更廣,需要學習的更快更深入,並且在技術之外,還需要有足夠的軟實力支撐。在這樣的要求下,很多時候,能力的差距已經不是用勤奮就能彌補的了,況且大部分人本來就談不上有多勤奮。

最近看到一個在零基礎自學Android最後能否找到工作,這個問題下的高票回答,講述了她從開始選擇Android,經過非常努力的學習和掙扎,然而最後面對當前的環境卻不得不放棄。看完以後真的非常替她感覺惋惜,如果早兩年入行可能結果會比現在好很多,但可惜,這就是現實,現在的要求更高。

最後回到主題,在這種情況下,Android開發者還會有之前那麼喫香嗎?我相信答案已經很明顯了,專注的開發者和麪對當前的環境,經過理性思考選擇放棄的人都能收穫更好的生活,但那些半吊子,之後在這個行業裏會越來越難受。

之前喫肉的以後能喫上海鮮,以前喝湯的可能現在就什麼都沒有了。

接下來我們換一個角度來看待這個問題,那就是發展前景。

Android發展前景

關於"大家統一唱衰Android開發"這種事,其實大家隨便聽聽也就好了,不用放在心上。

畢竟每年總是會有那麼多人會被淘汰掉,物競天擇,很正常,畢竟大多數人對自己的工作是缺乏反思的,當然這也是人之常情,但既然很多人有這樣的疑惑,這裏小編便給一點拙劣的建議,不一定對,很可能是一派胡言,畢竟這個和大多數人的看法好像不太一樣。

萬事萬物背後一定有個原理,尤其是咱們挖煤的更應該有這樣的態度,把原理搞清楚。所以不妨把這件事情捋一捋:

爲什麼上大家唱衰Android開發呢?

其實這很好理解,你看,技術是在更新換代的,時代是在進步的,以前喫生肉,然後會生火,後來用蒸汽電器,互聯網一點一點在進步。所以哪裏會有一招鮮喫遍天的事情呢?以前的DBA很厲害,10年的諾基亞也很厲害,13年的 Android 也很厲害,這兩年的區塊鏈也很厲害,這些都是衆所周知的對吧。

但現在的DBA呢,現在的諾基亞開發呢,現在的Android 和 IOS 呢?

歷史總是驚人地相似。

是的,任何一門技術,都是一定會被淘汰掉的。

這世界上有不死的人麼?

聽起來好像有點慘烈,但你必須接受這個現實,因爲接受事實是第一步。生活總歸是有希望的,在這樣慘烈的背景下也還是有我們能做的事。你看身邊好像還是會有那麼一些人,挖煤挖了幾十年還在挖。如果你覺得挖煤還不錯,想好好挖這個煤那就要虛心學習那些老挖煤工人賴以生存的技巧。

噹噹噹當,諸位看官請聽我娓娓道來。

呔!誰會需要挖煤工?
啊,老闆需要挖煤工!
老闆要的,你給不了那又如何?
被淘汰呀被淘汰!
那爲何有煤工挖了數十年?
因爲什麼煤都能挖呀都能挖!
爲何什麼煤都能挖?
對呀,爲何他什麼煤都能挖呢?
原來,永葆青春的祕訣就是:基礎!

這應該是老生常談的東西了吧,但好像只是"基礎"兩個字起不到任何幫助,所以我詳細說說。

就以 Android 來說,屬於移動端,你看Android,IOS,現在又出來一堆RN(當然,現在已經涼了 :D ),weex, flutter之類的東西。

前端的東西一年三變(這裏的前端指包括移動端在內的大前端),你沒有自己的判斷,很容易就會迷失在一堆雜亂無章的 "設計模式","設計思想" 裏,不知道什麼是重點,然後被一堆技術忽悠忽悠得雲裏霧裏,不知道要學什麼東西

我打個比方,你在看Android的源碼分析,實際上也就可以看到,他裏面各種各樣的View的工作原理實際上就是在一個叫 Canvas 的東西上用 Rect 之類的控件來畫畫,(這裏我們不考慮動畫之類的東西,因爲其實動畫也可以用 Canvas 做)。

嗯,這就是最精煉的Android繪製原理了。

其實 Flutter 裏面也有同樣的 Canvas,甚至你寫 Web 前端也有一樣的 Canvas,同樣的名詞出現在不同的地方,這是爲什麼?這個 Canvas 代表什麼東西?

如果你基礎 OK,就會知道,計算機顯示的原理實際上就是在一塊內存區輸出數據。這個Canvas 你可以看做就是提供給 "高級程序員" 的接口。

如果你學 Android 不妨把它 Canvas 如何工作,常用的第三方庫原理是什麼,比如有些框架是做自適應的,他是怎麼做到的?

造兩個輪子,然後你就會知道 Android 裏面設計有哪些是比較野雞的了(抱歉,我居然說出瞭如此大逆不道的話 >_<)。

順便想下原生的 Animation 是怎麼回事,除了繪製,還有按鍵,觸摸這些事情他是怎麼做的,偶爾看看源碼(其實源碼是最不重要的,當然,這話要等你至少看過一套源碼了才能這麼說),看看書。然後你可以玩玩 Flutter,對比下 RN,做點東西,然後下一份工作你就不再投 "Android 開發" 崗,而是 "移動端開發負責人",只要操作適宜,應該是可以過的。

當然,學習的時候很多東西都需要良好的計算機基礎,而且需要花一些時間,當然其實也花不了多少時間。

小小的總結一下,正確的思路就是:

不要糾結他是 Android 還是 Bdroid,你要關心的是解決了什麼問題

繪製,輸入,操作(按鍵觸摸),電量,IO,網絡,每一個話題下都有無數細節:繪製層級/ 重複繪製,bitmap佔用,預加載。

學習麼,要學總是有很多東西可以學的。

學習方向

目前我們要做的就是選好自己細分領域深入研究,對基礎原理性內容深入理解,儘快向高級水平靠近並達到。當然也要了解新技術,擁有開放的心態去學習一些新技術,不要一開始出來一個新技術就轉入學習,這樣會導致啥都會一點啥都不會,當然新技術是有一個發展過程的,不會立馬流行和大量應用等它稍微成熟點。

這樣你會少踩很多坑,也不要排斥它,完全不去理會和了解學習,正確的方式是簡單瞭解這個技術產生是爲了解決什麼問題,有什麼優缺點已經目前發展成熟度和應用範圍,我們還是要多抓住技術的本質和基礎,這樣出現了新技術學起來也會很輕鬆,當然機會合適了再去學習它。 所以,找準自己的定位及細分領域。

這裏我歸類瞭如下幾類:

1、應用層開發,不限於各種產品,主要還是Android原生開發,主要是各種性能優化。

2、嵌入式開發,不限於各種開發板子,物聯網,智能家居,車聯網/車載。

3、安全開發,不限於各種反逆向,反彙編,尋找安全漏洞。

4、音視頻開發,不限於直播、點播、音視頻通話、音視頻會議,短視頻等。

5、插件化、組件化、熱修復開發,不限於自研和使用開源框架集成開發。

6、系統開發(Android),不限於Rom維護和FrameWork層定製需求。

7、圖形圖像開發,不限於OpenGL ES,EGL,GLSurfaceView,濾鏡,美顏。

8、小程序 / 快應用

小程序是基於微信這個億級流量入口所衍生出來的產品,而快應用,快應用是九大手機廠商基於硬件平臺共同推出的新型應用生態。用戶無需下載安裝,即點即用,享受原生應用的性能體驗,不過個人覺得,他已經涼涼了,小程序倒是挺看好的,騰訊這座大山,微信這座涼亭,你想不涼快都難,不過看你是否剛需,比如你公司有需求,那你可以去學習。

推薦學習的新技術,Flutter和Kotlin,這兩個都是Google推薦的。

系統學習很難嗎?

自己去制定系統的一個學習計劃可能是比較難的,所以文章最後我給大家準備了一份系統的學習思維導圖,還有相關的學習資源,這些資料也都是我開發這麼多年一點一點的累積整理出來的,今天完全無償的分享給大家就是想今年寒冬我們程序員能好過一點,希望大家都能工作順利,事業有成。

首先是超級詳細得不能再詳細的Android開發學習思維導圖,因爲圖片實在是太大了,所以我就只把二級目錄的內容放出來,更加詳細的你們可以主頁掃微信二維碼獲取

接下來就需要梳理知識,提升儲備了!(Android移動架構師七大專題學習資源)

  • 架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO

  • Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化

  • 360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化

  • 解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack

  • NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發

  • 微信小程序:小程序介紹+UI開發+API操作+微信對接

  • Hybrid 開發與Flutter:Html5項目實戰+Flutter進階

知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。

然後再是通過源碼來系統性地學習

只要是程序員,不管是Java還是Android,如果不去閱讀源碼,只看API文檔,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。

真正最能鍛鍊能力的便是直接去閱讀源碼,不僅限於閱讀各大系統源碼,還包括各種優秀的開源庫。

再閱讀前輩的一些技術筆記,幫助提升

刷大廠面試題備戰,增加大廠通過率

歷時半年,整理了這份市面上最全面的安卓面試題解析大全。

1.可以通過目錄索引直接翻看需要的知識點,查漏補缺。
2.五角星數表示面試問到的頻率,代表重要推薦指數

以上內容均放在了開源項目:github 中已收錄,大家可以自行獲取(或者關注主頁掃描加微信獲取)。

最後:一點心裏話

如果你的水平接近達到高級水平,有信心快速達到高級水平,那就按照高級水平的技能點和市場招聘的高級要求對照靠近,一步步達到這個水平。

如果你的水平還是初級入門水平,或者興趣度不是很高,想早點轉換,你可以快速轉變,因爲在正確方向上努力太重要了,這裏也建議不要跨度太大,這裏我推薦往大前墩或者產品方向轉變,當然前提是你有這方面的興趣。

當然上面講的都是技術方向上的發展,當然對一些技術棧水平和技術積累到一定程度後你也可以往技術管理和產品方向發展,當然你也可以選擇創業,如果你有足夠好的idea和心理準備。

當然大部分人停留在中高級水平,然後一直停滯不前,加上外部各種環境,產生了各種焦慮,所以很矛盾,這時候你最好的狀態是快速往高級水平發展,當然這裏是比較難的,這個坎也是比較難邁過去的。因爲Android知識體系比較龐大和複雜的,涉及到計算機知識領域的方方面面。下次可以專門講講怎麼快速進階爲Android高級工程師。

名人語錄:“生活其實很簡單,但我們總是把它複雜化。”——孔子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章