一個程序員的"月經"問題:Android開發初期之後怎麼提升?家裏沒礦,只能靠自己了!

前言

在知乎上看到一個問題,程序員如何提高自己,Android開發初期之後怎麼提升?怎麼才能叫精通?方向在哪?

很多程序員都有想過這個問題,這是一個“月經”問題。

有些人在思考,思考者然後沒有然後了
有些人根本不思考,得過且過
有些人,已經做出了改變,並仍堅持着很多愛程序員哪怕是工作在忙也會抽出來一些時間,來學習,來搞副業,來提升

比如我是這樣安排的:

早上上班到公司去看一些相關的技術帖子,中午把午休時間縮短半個小時,去逛逛知乎,晚上下班兩個小時去學習,1~2個小時寫文章。我個人算不上什麼優秀,但是可以作爲參考。

然後我們來對問題分解一下

Android 開發 :

分成

  1. "開發" 一般的開發技能
  2. "移動應用開發" 移動應用開發相關概念思想
  3. "Android 開發" 特指與 Android 開發直接相關知識技能

正如你可能所想的那樣,這樣的問題不像1 + 1等於2那樣,有一個簡單確切的答案。真正答案因人而異。

下面我以自己幾年的Android 開發經驗,與你分享一二。

就按我上面所分解的幾個方面來說一說:

一:開發技能

你可以看成是一般的編程技能,這方面你可以從:

編程語言的熟練掌握
面向過程編程思想
面向對象的思想
函數式編程思想
設計模式
算法與數據結構
網絡編程,TCP/IP 協議
重構
版本管理(Git 等)

等方面的檢查和提高自己,更詳細的技能樹,自己搜索

二:移動應用開發

你可以看成是 App 開發,估計這可能是你更感興趣的,這方面你可以從MVC 這成三個方面來對照檢查下:

M:數據層,移動應用數據結構特點
數據存儲:SQLite數據庫,文件存儲
數據格式:XML 格式,JSON格式 序列化與反序列化
數據查詢:移動應用一般數據庫主要是 用SQLite

(說回來,單是 SQLite 數據庫,就可以花不少時間來深入學習下,因爲對一個應用來說,數據基本是核心)

V:視圖層

移動應用界面特點
移動應用構建界面常用方法
移動應用交互特點
移動應用動畫
系統 UI 系統特點,優點,缺點及侷限

C:控制層

移動應用控制層特點
控制層的生命週期
多線程,UI 線程,後臺線程

再加一層:

E:事件層

事件處理,觸控事件,手勢,事件響應鏈

三:Android 開發

工具篇 - 工欲善其事,必先利其器
Android Studio 掌握用得怎麼樣了?
Adb 及相關工具會用嗎?
Gradle 構建系統呢?
文檔篇 - 看 Android 官方是怎麼定義開發各種技能的。

相信常看 Android 開發者官方網站,你會收益良多,我下面寫的也不必看了。

系統篇

Android 多線程編程,異步編程特點 - Loop,Handler,IntentService,Broadcast,MessageQueue
Android UI 框架特點,優勢和不足
然後你再按 MVC 將 Android 各部分再分析分析,總結總結。

那麼,我們平常如何提升自己呢?

第一點,根據自己的專業,無論是前端或這是後端,都可以相對應的去看一些視頻,因爲這是對某個方面知識快速瞭解的好辦法,相比書籍和文檔,視頻要更精彩一些,而且花費的時間相對比較少,讓大家的注意力更集中一些。國外的或者國內的都有,不想花錢可以去b站或者YouTube上看,很多質量也是比較高的。

第二點,可以綜合的去了解一下其他語言,Android工程師不能光只會Android,可以去了解c++,kotlin方向的一些知識,有時候也不能盲目的去追求,哪個比較火學習哪個,這是隨波逐流的做法,根據實際情況,最好是在公司能學以致用。

第三點, 多做項目,多去練習。敢於嘗試自己專業的其他領域,熟能生巧,多嘗試幾種不同的編程語言,能給我們提供不同的編程思維視角,站在更高的維度看技術。如果在練習的途中,能夠舉一反三就闊以了。

第四點,多去分享和交流。一些中大型公司,部門內部都會有一個技術分享會,你可以對自己專長的方向研究一段時間以後,相關的技術演示給大家看。線上可以來直播或者把自己學到的東東錄製爲教程,或者參加一些技術等會線下論壇等。

分享是一個很好的實踐,同時也會剛你暴露出來一些不足之處,大家都知道。我們程序員不善言談,說話緊張,表達能力,或者邏輯思維能力都有待於提高,這些都是需要提高的地方。即使將來一天不做程序員了,彌補了這些不足之處也會是一筆巨大的財富。

做好規劃,每天進步一點點,一年下來,你可能就比別人進步了好多,不管別人怎麼想怎麼說,幹就是了。畢竟這個社會是現實的社會,很多人像我一樣家裏沒礦,這個時候只能靠實力說話了。

如何學習?

接下來來看看有一些進階學習的方向:

鑽研技術:

首先來看看 Android 有哪些方向,列舉幾個常見的:

  • 應用層開發,日常業務開發,主要還是原生開發,就業方向基本飽和,大部分只招高級工程師;
  • 遊戲開發,相比應用開發更喫香,有 Unity-3D 等遊戲引擎;
  • 跨平臺,比如 Flutter、RN,從成本上考慮,跨平臺是個不錯的選擇,我們 Android 有必要密切關注下;
  • 安全開發,一些對安全性很高,比如銀行項目,熟悉 Https、支付密碼安全、應用加固等;
  • SDK 開發,將應用裏的部分功能獨立了出來,封裝成 SDK 提供給合作伙伴使用;
  • 音視頻開發,比如音視頻直播/點播功能,則需要了解音視頻編解碼的傳輸協議,編解碼方式等;
  • 圖形開發,比如美圖、天天P圖,對圖形處理要求十分高;
    Framework 開發,手機廠商定製手機爲主,比如小米、魅族等;
  • 驅動開發,同上,更多是在和 Linux 打交道;
  • 如果你對技術感興趣,想做到專家級別,可以在以上這些方面深究下去,總之,勞資有技術,不怕沒飯喫。

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

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

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

以下是這份PDF主要內容

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

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

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

不用多說,相信大家都有一個共識:無論什麼行業,最牛逼的人肯定是站在金字塔端的人。所以,想做一個牛逼的程序員,那麼就要讓自己站的更高,成爲技術大牛並不是一朝一夕的事情,需要時間的沉澱和技術的積累。

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