Android:寒冬已至?真正厲害的人永遠沒有寒冬,只有菜鳥永遠在尋找南方!

今年的行情相對去年整體要差一些,很多同學發現很多公司招人,興沖沖去面試了,結果面了幾家都是等通知,實際上就是招聘的職位有限,面試的人很多。

寒冬真的來了嗎?我覺得未必,只是移動開發不熱門了而已,競爭更激烈的而已,需求還是有的,移動端程序員和PC時代的程序員還是不同的,目前還沒有出現能夠替代手機的這種高頻使用的物品。

作爲曾經炙手可熱的Android工程師,現在可能面臨着以下的問題:

  1. 互聯網整體環境不樂觀

  2. Android開發人員衆多但崗位減少,導致要求越來越苛刻

  3. 大前端趨勢、跨平臺方案頻出、小程序肆虐,Android不再是應用開發唯一的方案

  4. 人工智能、大數據等技術炒的火熱,培訓機構傾巢出動,學校學生瘋狂學習,而大學學Android出來找工作很一般。

從上面幾點來看,說Android工程師是四面楚歌真的不爲過,我會從以下幾個方面來進行分析,請輕拍。

  1. 解除對Android的誤解
  2. 是否要轉行
  3. 如何提升競爭力

1. 解除對Android的誤解

無論是Android同行還是其他技術領域,明顯都對Android有些誤解。作爲Android開發來說,如果對Android有誤解可能會影響到後續的發展和決定,我有必要來消除這個誤解。

1.1 Android系統的未來

Android系統是根,沒了它,Android工程師也不存在了。

在我的記憶中,早在2011年就有言論說Android系統要完蛋,時過9年後,Android系統仍舊堅挺。目前對它唯一有威脅的是谷歌的Fuchsia,谷歌的真正用意可能是做個備選而不是替代,因爲替代的難度太大了,現在Android已經廣泛的應用在手機、平板、車聯網、物聯網、智能電視等等領域,是名副其實的終端霸主。

我們不說手機,就說智能電視和智能投影機,這些早已普遍應用於各個家庭,新弄一個系統,就想讓開發人員重新開發這些定製系統和應用嗎?真的很難賣賬,更別說手機了,忽悠人家學Fuchsia,你當安卓開發都是傻子喜歡重蹈覆轍?Android不是塞班,豈是想替代就能替代的,這難度好比重新開發個PC操作系統替代windows一般。所以Android系統還會存活很長的時間,具體多久不好預測,應該比大多數程序員的職業生涯要長。

最近鴻蒙也出來了,很多同學問我鴻蒙對安卓有威脅嘛,別的角度不說,單純從打工人的角度,鴻蒙的出現實際上會有利於安卓開發,因爲其他技術分支做的話學習成本很高,安卓開發可以無縫切入鴻蒙進行鴻蒙開發,目前已經有安卓工程師同時進行安卓和鴻蒙的開發了,開一份工資做兩份工作,你說你老闆開不開心?

1.2 Android的未來就業趨勢

雖然現在Android的就業形勢不大好,但是其他技術領域的就業趨勢也不樂觀,這是因爲現在高校和培訓機構大量的培養人員湧入。我05年上大學時,軟件工程專業不是很火爆,學一些常規的技術,比如算法與數據結構、c++程序設計、面向對象方法及程序設計等等,畢業了也就是搞搞C++,做做Java Web和.NET等等。

而放眼現在,IT相關的專業簡直就是火爆,大家都覺得這行有發展賺錢多,因此越來越多的學生報考了相關專業,很多大學都有移動互聯應用技術專業,還有人工智能學院,每年都有大量的大學畢業生和培訓機構出來的湧入市場,而中國的互聯網企業顯然不需要這麼多的人才,最終的結果可想而知還是狼多肉少。

我們大概可以預測到未來Android開發的人數會增長緩慢,考慮到企業未來的職位,Android未來的就業趨勢仍舊是平穩的,但其他的技術領域就不好說了,畢竟什麼領域也抗不住湧入的人巨多啊。

最近又聽說很多人轉行安卓了?what?49年入國軍?還真不是,因爲現在很多技術分支人數太多了,物極必反,轉安卓也沒啥大驚小怪的。

1.3 Android開發的天花板

很多人會覺得Android技術深度不深,技術棧不龐大,Android職業發展有限,這個真是大大的誤解。

先說技術上,Android的技術棧隨着時間的推移變得越來越龐大,細分領域也越來越多,主要有Android應用開發、逆向安全、音視頻、車聯網、物聯網、手機開發和SDK開發等等,每個細分領域都有很多技術棧組成,深度都足夠精深,就拿所有細分領域通用的Android系統底層源碼來說,就會叫你學起來生不如死。

再說職業上,確實Android應用開發很難升任CTO和技術總監,一般的CTO和技術總監主要是後端,這主要是兩個原因:

  1. 後端的技術棧很早就成熟了,我10年前轉做Android開發時,那幫30多歲的Java開發就已經很厲害了,隨着時間的推移,後端技術大牛遠比Android大牛的人數要多,也更厲害,他們做技術經理時,我們都還在搬磚。

  2. 後端確實可以統籌全局,在公司業務上屬於重要地位。

不過我們忽略了最重要的一點,如果我們是做後端的,一定能做到CTO和技術總監嗎?我想也是很難的,所以不要眼睛只盯着高處,先想想自己能達到什麼程度,站在半山腰就說山下面的風景不開闊本身也不合理啊

2.是否要轉行

Android不熱門了,很多Android開發已經轉行了,有的正走在轉行的路上,還有的遲疑不決,到底要不要轉呢?我們來分析下。

2.1 轉什麼最好

每個人的自身情況不同,轉的方向也會有所區別,轉人工智能相關開發貌似是最好的,不過最近人工智能風頭沒有去年高了,而且人工智能相關對學歷和算法要求很高,最起碼得是個碩士吧,而且這只是低配。那麼大多數Android開發可以轉的方向主要有前端、後端和python等等。我大概說一下:

1.轉前端,這個是我認爲最好轉的一個方向,前端的理念很多都和Android類似,也可以作爲Android的延伸,向大前端發展,如果對界面感興趣的可以轉前端試試。

2.轉後端,後端這個就是完全的轉行了,看似Java大家都會,但是後端的技術棧可不是隻有Java,各種框架絕對叫你頭大,很多人強調後端技術深,各種處理高併發看似十分有技術含量,不過這只是爲數不多的公司在做。如果想要穩定的可以轉後端試試。

3.轉python,python貌似是很火,因爲他跟人工智能發生了關聯,其實大部分學python的沒有搞什麼人工智能相關,基本都是在搞爬蟲。追求浪潮的可以轉python試試。

2.2 不要輕易轉行,要轉就儘早轉

轉行有兩種我認爲是正常的,一種是行業消失或者沒落了,個人無法施展才華。另一種是興趣不在本行,因此轉一個自己感興趣的。而現在大部分轉行純屬是爲了跟風,爲了那點錢,而忽略了長期的發展。我們來看看下面的圖。

這個圖不完全準確,只是爲了更好的說明一些問題。

從圖中可以看出,大部分人在35歲前是在加速期,35歲後是上升或者衰落期。

以Android開發轉前端來說,假設一個Android高級A同學轉行前端會變爲前端初級或者中級,這時從事前端的人都在加速提高,A同學要想趕超前面的擁有同樣加速度的人是很難辦到的,這就導致他在轉行前期極爲被動,A同學還要保證在35歲前成爲前端專家或者Leader纔有可能在35歲後不進入衰落期,當然這時A同學的Android如果不經過實踐和學習基本也就荒廢了,很難成爲專家。

如果還想要在技術領域走的更遠,就不要輕易的進行轉行,如果想要轉越早越好,越快越好,因爲其他的競爭者都在加速提高,沒人會停下等你的。

2.3 轉行大部分都不是質變

一個開發的質變可以理解爲在一個領域的大幅提升,或者是不相關領域的跨界,舉個例子:可以在Android領域由高級質變爲了專家,或者是由一個高級開發升到了Leader,再或者跨界開始做了一些技術相關的培訓、演講、出書等等而被人所熟知,再或者是創業、搞副業等等拓寬了賺錢的渠道。

凡是能幫助35歲後不進入衰退期的都可以看做是一次質變,而轉行很少是質變,更多的是倒退回到原點重新出發,形象點來說,就是換了個不同的磚頭接着搬磚而已(高技術含量的除外)。因此我們更應該去追求質變,而不是平行或者倒退,一次倒退可以承受,多次倒退就很難在35歲後進入上升期。

3. 如何提升競爭力

看到這裏,如果你還是想轉行的話就不要看下去了,我們來說下Android如何提升競爭力。

3.1 選擇一個細分領域

Android現在細分的領域非常多,前面說到的有應用開發、逆向安全、音視頻、車聯網、物聯網、手機開發、SDK開發和智能電視盒子開發等等,在這些領域中選擇一個並不斷深入。比如音視頻,在10年前我剛入門Android時,音視頻就是悶聲發大財了(PC端),工資高的令人乍舌,現在在移動端,音視頻更是青出於藍,是一個非常好的選擇,如果想要入門可以看看何俊林《Android音視頻開發》。

3.2 儘量學習半衰期長的知識

知識半衰期指的是:隨着知識更新週期變短,知識裂變速度加快,一個知識落伍的週期。

知識半衰期長的職業都是越老越值錢的,比如英語老師和外科醫生,知識更新慢並且幾乎不會落伍。這一點我們程序員是絕對比不了的,我們的大部分知識半衰期是比較短的,一個框架短短几年可能就會被淘汰,這也導致程序員需要不斷的學習新知識,而我們每個人的時間和精力是有限的,那麼根據知識半衰期,有策略的進行學習就變得尤爲重要。

上面的半衰期圖不完全準確,但是卻值得參考,如果你是其他的技術領域也可以參考這個半衰期圖。這個圖不是告訴我們不要去學RN和小程序,而是結合自身工作儘量學習半衰期長的知識。

3.3 做減法,儘量專精一門技術

現在的社會,技術分工越來越細,越細就意味着大部分企業(小作坊除外)需要專精的人才(最好是精通一門通多門)。你會發現身邊脫穎而出的技術人大多都是靠一門技術,卻很少看到會一堆技術卻都不精通的冒出來。好比在武俠的世界,高手對決都在同一個時間段拿出看家武學,如果看家武學都不精,分分鐘被虐,省下的武學也無需拿出來獻醜了。聯想到現實版本就是去大公司面試Android,結果Android技術瞭解不深,被各種虐,剩下的前端技術、後端技術、python什麼的,面試官也沒興趣瞭解了。

所以並不是你會的技術越多越好,一定要做好減法,先專精一門,然後再去學別的技術。

3.5 到底要深入學什麼?

根據知識的半衰期,作爲Android應用開發最應該學習的就是:

Java基礎、App開發相關技術、Android系統底層源碼、數據結構、設計模式、網絡相關等等。

這顯然還不夠,還有一個最重要的知識沒有講,那就是Android系統底層源碼,這是知識半衰期長並且通用的知識,不論你從事Android哪個細分領域,Android系統底層源碼都是你需要掌握的,並且它會讓你擁有較強的競爭力,這是因爲較長的時間學習也只能掌握皮毛。

4. 帶領大家一起學習

如果你不知道怎麼學習,我這裏給大家提供一個方向,進行體系化的學習!

除了上面的學習路線,還給大家整理了一份Android進階學習資料,主要爲安卓相關知識點及面試資料爲主,在這個PDF中,通過詳解各大互聯網公司的 Android 常見面試題爲主線,從面試的角度帶你介紹必備知識點,以及該知識點在項目中的實際應用。

幫你在現在的基礎上,重新梳理和建立 Android 開發的知識體系。無論是你短期內想提升 Android 內功實力,突破自己工作中的能力瓶頸,還是準備參加 Android 面試,都會在這個PDF中有所收穫。一些基礎不好的,這裏也有一份安卓基礎資料包,幫助鞏固基礎。

以下是這份PDF主要內容

  • Android 核心技術:介紹 Android 開發中常用的核心技術,比如自定義 View、Handler,以及一些開源框架的原理實現,來夯實你的底層能力。只有底層能力足夠出色,之後的進階之路纔會更加輕鬆。
  • 常見問題剖析:介紹一些項目中常見的疑難問題,使你能夠對現有項目做出合理的重構優化。

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

通過源碼來系統性地學習

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

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

刷題備戰,直通大廠

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

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

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

學習技術是一條慢長而艱苦的道路,不能靠一時激情,也不是熬幾天幾夜就能學好的,必須養成平時努力學習的習慣。所以:貴在堅持!

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