本文首發於 劉望舒的博客
地址:liuwangshu.cn/life/androi…html
寒冬真的來了嗎?多是吧,由於最近幾年每一年都說是寒冬,說的真的叫人焦慮。不過互聯網的總體環境確實不如前幾年,即便不說我想你們也能隱約的感覺到了。做爲曾經煊赫一時的Android工程師,如今面臨着如下的問題:前端
從上面幾點來看,說Android工程師是四面楚歌真的不爲過,本篇文章會從如下幾個方面來進行分析,請輕拍。python
不管是Android同行仍是其餘技術領域,明顯都對Android有些誤解。做爲Android開發來講,若是對Android有誤解可能會影響到後續的發展和決定,我有必要來消除這個誤解。android
Android系統是根,沒了它Android工程師也不存在了。在個人記憶中,早在2011年就有言論說Android系統要完蛋,時過7年後,Android系統仍舊堅挺。目前對它惟一有威脅的是谷歌的Fuchsia,谷歌的真正用意多是作個備選而不是替代,由於替代的難度太大了,如今Android已經普遍的應用在手機、平板、車聯網、物聯網、智能電視等等領域,是名副其實的終端霸主。咱們不說手機,就說相對小衆智能電視和智能投影機,這些早已廣泛應用於各個家庭,新弄一個系統,就想讓開發人員從新開發這些定製系統和應用嗎?真的不會賣帳,更別說手機了。Android不是塞班,豈是想替代就能替代的,這難度比如從新開發個PC操做系統替代windows通常。因此Android系統還會存活很長的時間,具體多久很差預測,應該比大部分人的程序員生涯要長。 最近谷歌在開發者大會上不多說起Android,不少媒體大肆宣揚穀歌再也不重視Android,這是由於谷歌有不少新的產品要推廣,而做爲谷歌大兒子的Android早已深刻人心,無需過多的推廣,並不意味着谷歌再也不重視Android,Android系統還會持續的完善。c++
雖然如今Android的就業形勢不大好,可是其餘技術領域的就業趨勢也不樂觀,這是由於如今高校和培訓機構大量的培養人員涌入。我05年上大學時,軟件工程專業不是很火爆,學一些常規的技術,好比算法與數據結構、c++程序設計、面向對象方法及程序設計等等,畢業了也就是搞搞C++,作作Java Web和.NET等等。而放眼如今,IT相關的專業簡直就是火爆,你們都以爲這行有發展賺錢多,所以愈來愈多的學生報考了相關專業,不少大學都有移動互聯應用技術專業,還有人工智能學院,每一年都有大量的大學畢業生和培訓機構出來的涌入市場,而中國的互聯網企業顯然不須要這麼多的人才,最終的結果可想而知仍是狼多肉少。 咱們大概能夠預測到將來Android開發的人數會增加緩慢,考慮到企業將來的職位,Android將來的就業趨勢會緩中有升,但其餘的技術領域就很差說了,畢竟什麼領域也抗不住涌入的人巨多啊。 程序員
不少人會以爲Android技術深度不深,技術棧不龐大,Android職業發展有限,這個真是大大的誤解。 先說技術上,Android的技術棧隨着時間的推移變得愈來愈龐大,細分領域也愈來愈多,主要有Android應用開發、逆向安全、音視頻、車聯網、物聯網、手機開發和SDK開發等等,每一個細分領域都有不少技術棧組成,深度都足夠精深,就拿全部細分領域通用的Android系統底層源碼來講,就會叫你學起來生不如死。面試
再說職業上,確實Android應用開發很難升任CTO,通常的CTO主要是後端,這主要是兩個緣由:算法
不過咱們忽略了最重要的一點,若是咱們是作後端的,必定能作到CTO嗎?我想也是很難的,因此不要眼睛只盯着高處,先想一想本身能達到什麼程度,站在半山腰就說山下面的風景不開闊自己也不合理啊。小程序
Android不熱門了,不少Android開發已經轉行了,有的正走在轉行的路上,還有的遲疑不決,到底要不要轉呢?咱們來分析下。windows
每一個人的自身狀況不一樣,轉的方向也會有所區別,轉人工智能相關開發確定是最好的,畢竟風口上的豬也能飛,跟着風口無可厚非。只惋惜人工智能相關對學歷和算法要求很高,最起碼得是個碩士吧,並且這只是低配。那麼大多數Android開發能夠轉的方向主要有前端、後端和python等等。我大概說一下: 1.轉前端,這個是我認爲最好轉的一個方向,前端的理念不少都和Android相似,也能夠做爲Android的延伸,向大前端發展,若是對界面感興趣的能夠轉前端試試。 2.轉後端,後端這個就是徹底的轉行了,看似Java你們都會,可是後端的技術棧可不是隻有Java,各類框架絕對叫你頭大,不少人強調後端技術深,各類處理高併發看似十分有技術含量,不過這只是爲數很少的公司在作。若是想要穩定的能夠轉後端試試。 3.轉python,python最近真是很火,由於他跟人工智能發生了關聯,其實大部分學python的沒有搞什麼人工智能相關,基本都是在搞爬蟲。追求浪潮的能夠轉python試試。
轉行有兩種我認爲是正常的,一種是行業消失或者沒落了,我的沒法施展才華。另外一種是興趣不在本行,所以轉一個本身感興趣的。而如今大部分轉行純屬是爲了跟風,爲了那點錢,而忽略了長期的發展。咱們來看看下面的圖。
從圖中能夠看出,大部分人在35歲前是在加速期,35歲後是上升或者衰落期。以Android開發轉前端來講,假設一個Android高級A同窗轉行前端會變爲前端初級,這時從事前端的人都在加速提升,A同窗要想趕超前面的擁有一樣加速度的人是不可能辦到的,這就致使他在轉行前期極爲被動,A同窗還要保證在35歲前成爲前端專家或者Leader纔有可能在35歲後不進入衰落期,固然這時A同窗的Android基本也就荒廢了,很難成爲專家。若是還想要在技術領域走的更遠,就不要輕易的進行轉行,若是想要轉越早越好,越快越好,由於其餘的競爭者都在加速提升,沒人會停下等你的。
一個開發的質變能夠理解爲在一個領域的大幅提高,或者是不相關領域的跨界,舉個例子:能夠在Android領域由高級質變爲了專家,或者是由一個高級開發升到了Leader,再或者跨界開始作了一些技術相關的培訓、演講、出書等等而被人所熟知。 凡是能幫助35歲後進入上升期的均可以看作是一次質變,而轉行不多是質變,更多的是倒退回到原點從新出發,形象點來講,就是換了個不一樣的磚頭接着搬磚而已(高技術含量的除外)。所以咱們更應該去追求質變,而不是平行或者倒退,一次倒退能夠承受,屢次倒退就很難在35歲後進入上升期。
看到這裏,若是你仍是想轉行的話就不要看下去了,咱們來講下Android如何提高競爭力。
Android如今細分的領域很是多,前面說到的有應用開發、逆向安全、音視頻、車聯網、物聯網、手機開發、SDK開發和智能電視盒子開發等等,在這些領域中選擇一個並不斷深刻。好比音視頻,在8年前我剛入門Android時,音視頻就是悶聲發大財了(PC端),工資高的使人乍舌,如今在移動端,音視頻更是青出於藍,是一個很是好的選擇,若是想要入門能夠看看何俊林《Android音視頻開發》。
知識半衰期指的是:隨着知識更新週期變短,知識裂變速度加快,一個知識落伍的週期。知識半衰期長的職業都是越老越值錢的,好比英語老師和外科醫生,知識更新慢而且幾乎不會落伍。這一點咱們程序員是絕對比不了的,咱們的大部分知識半衰期是比較短的,一個框架短短几年可能就會被淘汰,這也致使程序員須要不斷的學習新知識,而咱們每一個人的時間和精力是有限的,那麼根據知識半衰期,有策略的進行學習就變得尤其重要。
上面的半衰期圖不徹底準確,可是卻值得參考,若是你是其餘的技術領域也能夠參考這個半衰期圖。這個圖不是告訴咱們不要去學RN和小程序,而是結合自身工做盡可能學習半衰期長的知識。
如今的社會,技術分工愈來愈細,越細就意味着大部分企業(小做坊除外)須要專精的人才(最好是精通一門通多門)。你會發現身邊脫穎而出的技術人大多都是靠一門技術,卻不多看到會一堆技術卻都不精通的冒出來。比如在武俠的世界,高手對決都在同一個時間段拿出看家武學,若是看家武學都不精,分分鐘被虐,剩下的武學也無需拿出來獻醜了。聯想到現實版本就是去大公司面試Android,結果Android技術瞭解不深,被各類虐,剩下的前端技術、後端技術、python什麼的,面試官也沒興趣瞭解了。 因此並非你會的技術越多越好,必定要作好減法,先專精一門,而後再去學別的技術。
Android相關的火熱技術最近幾年也是頻出,沒事就在刷屏,我來講說對這些火熱技術的見解。
這兩個技術都建議你們來學習,但不要期望它們會給你增長什麼太大競爭力,李四1周能學會,張三一樣也能。
根據知識的半衰期,做爲Android應用開發最應該學習的就是Java、App開發相關技術、Android系統底層源碼、數據結構、設計模式、網絡相關等等。 可是大部分實際開發中,算法是最不經常使用的,常常是爲了面試去學的,那麼剩下的內容都是須要深刻學習的。 我也是遵循這個想法,在2017年出版了《Android進階之光》,裏面介紹了設計模式、網絡相關、Java、App開發相關技術。這顯然還不夠,由於還有一個最重要的知識沒有講,那就是Android系統底層源碼,這是知識半衰期長而且通用的知識,不論你從事Android哪一個細分領域,Android系統底層源碼都是你須要掌握的,而且它會讓你擁有較強的競爭力,這是由於較長的時間也只能掌握皮毛。 爲此,我在今年出版了Android進階二部曲第二部《Android進階解密》,這是一本爲應用開發寫的源碼分析書,會將系統源碼和應用開發結合講解,幫助讀者融會貫通。
好了,就說到這裏,本文可能仍是有一些不成熟的觀點,你們請輕拍。另外,最好不要拿一些特例說事,有的人運氣好,他怎麼折騰都成,而大部分人其實運氣很通常。
分享大前端、Java和前沿技術,關注職業發展和行業動態。