互聯網寒冬下,原生Android開發的路該怎麼走

移動寒冬

18年的冬真冷,你們都在說裁人,其實裁人一直都在,只是18年的確多點。android 10年了,已經積累了太多的技術,知識點,技巧,思路,這些前人都會了,而且正在創造新的思路出來,對於廣大的底層 coder 來講,僅僅是追趕就很難了,更別提去本身創造了,可是現實時咱們嚐嚐學習了不少開源框架,落到實處就是僅僅會用而已,不說源碼看沒看過,甚至原理都不知道,不知道做者用什麼技術實現的,這點就是廣大 coder 的現狀,沒有成長。java

在來講大環境,在寒冷的冬天,仍是有不少公司再招聘。在移動設備深刻人心的今天,你們誰能離得開移動物聯網設備,巨大的設備保有量決定了移動端市場需求仍是旺盛的。企業須要什麼的移動 coder,中高端啊。從咱們把頁面 code 出來的入門水平開始,成長到中級水平,說實話仍是很是不容易的,事實是從平均來看,2-3年成長到中級的人也不是很是多的。企業再面試時也只能經過大量面試才能找到一個合心的高級開發,此過程耗時費力,說明你們水平相對需求來講仍是過低,有待繼續增強!python

冬天冷的不是市場,是處於行業低端的咱們,移動開發行業,不進步就會死,永遠也不會改變,你們悶頭努力一年,咱們都能有個好收穫的,再去面試機會機會大不少。android

薪酬

若是你的薪資還沒超越 20K ,說明你的安卓作的還不夠好。git

一方面,技術能力,知識面太窄了。建議多個模塊功能都嘗試一下。不能僅僅在本身公司的項目上,其餘方面都不太精通。這樣的結果,對本身發展不太好。(好比,對本身公司的功能作的賊好。賊瞭解。問一個其餘方面功能模塊,就不知道了。建議多方面都發展,而且多作數據分析。好比百度指數,阿里指數,APP功能指數,今日頭條指數。而後本身往這些方向發展一下。好比2018年-2020年,項目中小視頻,社區中小視頻,直播,都會在項目中添加。這方面經驗豐富的人需求很高)。程序員

第二:有的同窗是真的有能力,會作;可是能繼續深刻的理解原理,或者知道原理了,本身怎麼去解決問題(而不是百度解決)的能力就差一點了。好比不少人在面試中都面臨的,不會說,可是你會寫,能寫出來。爲何不會說,由於不是清楚系統的理解,因此不能回答的很好。github

現實是咱們夯實技術,擴展知識面以後,20K 是比較容易達到的,可是想過 30K 就很難了。那些能在 github 寫本身開源項目,好比 okhttp,retrofit ,rxjava 這樣重量級開源框架的 coder 才能過 50K 。着期中的差距,你們本身體會吧,努力能夠過 20k,長久不停的努力積累以後纔有過 30K 的但願,道路任重道遠,你們努力珍重。再着期中要平衡工做,生活,家庭,健康是個大問題,惟有高效率纔是根本出路~面試

Android層級劃分

一般,咱們將 android水平能夠劃分爲:入門,初級,中級,高級,資深。算法

可是這樣的劃分對咱們沒有什麼指導意義,不一樣層級的Android開發者的不一樣行爲,咱們該如何進階和規劃呢?數據庫

第一層:普通程序員
第二層:熟練開發者、高級開發工程師、技術組長
第三層:技術專家、架構師、一線經理
第四層:科學家、研究員、首席(資深)架構師、部門研發總監canvas

Android如何過冬

上帝老是偏心那些愛思考的人,愛思考的人運氣通常也不會太差,在 哪有什麼互聯網寒冬?只是你穿的少而已! 一文中,做者大概聊了聊關於思考的話題,我以爲你們應該去看看,而後思考下本身

技術是咱們的基本盤,但不是所有,最近阿里不是放話了嗎,之後其餘崗位的儘可能挑有技術背景的,我看到這種思想漸漸再國內得到認同,愈來愈多的公司都在更考慮有技術背景的人,這是咱們的機會,年齡大了,年紀到了,老是隻有不多的一部分人才能順利的晉升管理崗位,其餘的同窗必須面臨轉崗,轉崗不是換行業,產品,項目經理,運營等等其餘咱們 coder 均可以幹,這些崗位須要的技術,知識點相比 coder 來講簡直是小巫見大巫,在咱們平時對這些崗位有深刻了解,有深刻的交流經驗,有深入的認識後,咱們 coder 轉這些崗位其實不難,很快就能上手,可是這須要咱們提早考慮好本身轉崗的位置,平時要多去專一,交流, 學習,能再本公司內轉崗是最好的了,這樣公司會對你們比較寬容

coder 們要是打算換工做了,那就不要研究其餘的了,就專心 android 技術吧,python,H5 等穩定下來再說吧,咱們畢竟是作 android 開發的,找的也是 android 開發的工做,其餘方向雖然更好但不是公司考慮的重點。

Android的核心知識點

作Android 開發,無外乎那麼一些知識點:

  • 各大開源框架的研究,包括但不限於下面幾個
    OKhttp、Retrofit、eventbus、Glide、eventbus、Rxjava、blockcanary、mvvp、dagger2等。
  • 組件化是基本要會的,插件化大公司要求會實操的。
  • java 部分,包括 常見的數據結構和算法,hashmap,二叉樹,紅黑樹,apt 註解,aop插樁,整套多線程知識點,包括ThreadLocal實現原理
  • flutter/Dart 你們要開始學了,就和當年咱們學 kotlin 同樣,flutter 基本一槌定音了,google 下一代就是 flutter 的天下。
  • android 的系統原理,Lru算法,Binder機制,EventBus實現原理和爲何不能跨進程,跨進程幾種方式,AIDL,handler機制。
  • 音視頻開發,直播、點播、音視頻通話、音視頻會議,短視頻,這些不必定要多深刻,可是基本的各大平臺的 SDK 要會集成,能根據開源的 嗶哩嗶哩IJKMediaPlayer 編寫本身的視頻,音頻播放模塊。
  • 最後,就是Android的優化了,Android的優化無外乎如下幾個方面:內存優化(穩定性)、交互優化(流暢度)、耗電優化(省電)、安裝包大小優化、網絡優化、應用啓動優化等幾個方面。

若是你們想要深刻的話,能夠重點關注下如下幾個方面的內容:

  • 圖形圖像開發,不限於OpenGL ES,EGL,GLSurfaceView,濾鏡,美顏,canvas,paint
  • 應用層開發。主要仍是原生開發,提升性能優化技能(啓動耗時、內存、耗電、網絡、數據庫、穩定性等),達到高級開發者的水準
  • 深刻Android專業技能提高。主要是閱讀源碼,理解透Android開發常見的流程和原理(activity啓動流程、事件分發機制、廣播機制、Binder機制、內存管理機制等)

向Android架構師發展。從平時的一點一滴開發中,有意訓練Android架構設計能力,這須要站在一個更高的角度來統籌App開發。

  • 跨平臺開發能力。如RN、Weex、Flutter等。大部分公司目前都須要有跨平臺開發能力,因此咱們頗有必要提升這方面的能力
  • SDK和框架開發。能夠經過研究開源項目或者實際項目開發,抽象提取有用SDK和框架供其餘人使用
  • 研究Android安全開發。App加固原理和實現,熟悉常見加密方式(如:RSA、DES等)、Https、支付安全等。
  • Android自動化測試工具開發。這須要對ADB、Android截圖、Android佈局解析、Android測試框架等至關熟悉
  • 音視頻開發。前兩年比較火的直播,還有這一兩年比較火的短視頻,都是與音視頻相關。因此,咱們能夠了解音視頻的編解碼以及傳輸協議等。
  • 手遊開發。遊戲給鵝廠帶來了穩定的收入,因此這也是不錯的方向。這就須要熟悉常見的遊戲開發框架cocos2d-x、Unity3D
  • 圖像開發。好比美圖秀秀、每天P圖,都用到圖形的合成、濾鏡等技術,對圖像處理有很高要求。
  • Android Framework 開發

除此以外,要成長爲一個架構師,還須要開發者具有系統設計能力。具體來講,爲若是你僅僅是對各類各樣的技術都熟悉,有技術廣度,也有必定的技術深度,其實是不夠的。若是你的系統設計能力不到位,可能致使你在開發系統的時候會亂用技術。

好比說,有的系統他有一些本身特殊的業務場景和技術挑戰,實際上在這個場景之下比較合適的是採用 「緩存 + 數據庫」 的技術方案來應對。可是呢,有的工程師會不少技術,可是缺乏這種準確的分析系統問題,提出合理的技術方案的能力,也就是缺乏系統設計能力,致使他可能會引入Elasticsearch這種技術來嘗試解決這個問題,那麼結果必然是失敗的。

規範代碼

無論如何,你的代碼得先能讓人看。這是我在剛剛入行時,一個老司機指導個人,隨着我在學習的深刻,瞭解的更多,咱們在基本功上的追求不就是爲了代碼更加好看嗎,好看的代碼才更好懂,才能好改,設計模式,代碼架構,框架設計,MVP(多端分離) 不都是追求的這個最終結果嘛。

所以,咱們能夠從如下幾個方面着手:

  • 實現功能前先設計好代碼,好的框架層次,讓咱們能夠快速的瞭解整個框架實現,快速的找到想要的代碼,優秀準確的名字咱們能夠知道類是幹什麼的,
  • 註釋寫的儘可能詳細
  • 不要寫太長的方法
  • 不要寫太「牛」的代碼了,有的程序員喜歡寫很是有個性的代碼,喜歡寫一些別人很難看懂的代碼,他認爲這樣才能顯示出本身的「高水平」,這樣就不是高水平了,只能說代碼的可讀性太差了。

最後,互聯網不存在所謂的寒冬,只是你沒有努力罷了!!!

相關文章
相關標籤/搜索