Android:開發初期水平停滯後怎麼提升?切忌雜學亂學,無效的學習路線學習十年也沒用
背景
作為一個資歷不淺的Android開發,這幾年我面試過不少人。發現大多數面試者,雖然看起來工作努力,但他們表現出來的能力水平,卻不足以透過面試,或拿不到期望的薪資。
在我看來,造成這種情況的原因,主要有這麼兩方面:
第一, “知其然不知其所以然”。做了幾年技術,開發了一些業務應用,但沒有思考過這些技術選擇背後的邏輯。所以,我很難定位他們日後的成長潛力,也不會放心把有一定深度的任務交給他們。
第二, 知識碎片化,不成系統。事實上,當面試者無法完整、清晰地描述自己所開發的系統或使用的相關技術時,面試官就會懷疑他是否具備解決複雜問題、設計複雜系統的能力。
所以,如果你平時只知道埋頭苦幹,或過於死磕某個實現細節,沒有抬頭審視過這些技術,那麼在準備面試時,很有必要好好梳理一下 Android 知識體系,這樣才能拿下滿意的 Offer。
那麼,作為Android 開發者,該怎樣規劃自己的學習路線,然後一步一個腳印的向中高階進階呢?本篇文章根據自己的一些見解梳理一下。
Android開發初期之後怎麼提升?怎麼才能叫精通?方向在哪?
我發現好多人始終停留在兩三年的水平上沒有突破。
那麼為什麼很多人會一直停留在兩三年的水平上,而後一直在重複以往的經驗?
我認為最主要的一點就是主觀能動性,或者說興趣,如果你對Android開發沒有太大的興趣,那麼還是儘早換方向吧。有了興趣,然後就是要有一個比較正確的鑽研路線,不要這也搞那也抓,最後什麼都沒精通又好像什麼知道。
我覺得一個比較好的路線是,把日常開發常用的各種系統庫,開源庫,程式碼好好研究一遍,比如我用了butternife就要了解背後的apt,以及apt衍生出來的一系列庫比如Hugo。當然這大部分情況是初級進階的第一步。 這個階段應該是儘量很好的用技術完成業務需求。
第二個階段,我覺得可以嘗試去了解Android Framework比較細節的一些東西,比如activity啟動流程,順便分析清除Activity stack的管理,比如瞭解Android的資源載入機制,順便了解aapt是如何打包Android資源的;又比如Java的類載入機制,這裡配合資源的載入機制,很自然的就可以去了解Android的hotpatch機制,外掛化的實現,開一些這方便的開源庫或者自己擼一個也就自然而然。
第三個階段,橫向擴充套件,到這個階段並不是說比第二個階段更加高階了,而是對第二個階段的一些補充,比如你是不是可以瞭解一下web開發,這樣做hybrid開發的時候就會更順手。是不是要了解一下這麼火爆的ReactNative&Weex技術,甚至可以把他們的一些思想拿過來自己用,比如我司內部就有很多專案是用了JSCore和CssLayout來實現一些更輕量的動態化技術的。正如科學領域很多重大貢獻都是在交叉學科領域出現的。技術上到了這個階段甚至可以做到技術影響業務,技術驅動業務。
不要學得太雜太亂!學習Android開發只要記住這幾點!
我也已經做了好幾年開發了,還記得剛出來工作的時候覺得自己很牛逼,現在回想起來也蠻好笑的。懂的越多的時候你才會發現懂的越少。因為如果你的知識是一個圓,當你的圓越大時,圓外面的世界也就越大。
最近看到很多Android新手問Android學習路線,學習方法啊,如何入門啊,所以我以我的工作經驗給大家總結一下,讓大家少走彎路,提取一些工作中經常用到的技術。當然,說一千道一萬,最重要的還是學以致用,把學過的知識融會貫通。
如何知道我需要學什麼
相信大家在覺得迷茫的時候,經常會選擇自暴自棄、或者完全按照自己的喜好去學習,這是有利有弊的,總體來說弊大於利。我一直認同一個觀點,就是“你的認知比你的知識更加重要”,換句話說,也就是“ 你知道你需要去學什麼,比你所學的知識更加重要”,如何知道自己缺乏什麼,應該去學習哪些技能, 這才是從思維上、思想上改變你對學習的態度!
如何知道自己應該具備哪些技能呢?或者說,我自己還缺乏哪些技能呢?
這個問題一直是困擾著很多人,解答這個問題其實很簡單,這個問題的回答,往往離不開行業的最新動態:從下面培訓機構的培訓清單、招聘資訊的招聘要求就可以看出來。下面先介紹如何從培訓機構的培訓清單開出行業的動態。
培訓機構一直是網際網路行業的風向標,培訓機構的嗅覺是十分敏銳的,他們必須關注行業的最新技術方向、最新技術。所以,在一定程度上面,雖然我們大多數人都挺牴觸培訓機構,但是培訓機構的培訓清單可以作為我們 學習的風向標、學習清單!
例子1:(介紹一下往高階Android開發工程師進階需要具備的哪些知識)
- 架構師築基必備技能: 深入Java泛型+註解深入淺出+併發程式設計+資料傳輸與序列化+Java虛擬機器原理+反射與類載入+動態代理+高效IO
- Android高階UI與FrameWork原始碼: 高階UI晉升+Framework核心解析+Android元件核心+資料持久化
- 360°全方面效能調優: 設計思想與程式碼質量最佳化+程式效能最佳化+開發效率最佳化
- 解讀開源框架設計思想: 熱修復設計+外掛化框架解讀+元件化框架設計+圖片載入框架+網路訪問框架設計+RXJava響應式程式設計框架設計+IOC架構設計+Android架構元件Jetpack
- NDK模組開發: NDK基礎知識體系+底層圖片處理+音影片開發
- 微信小程式: 小程式介紹+UI開發+API操作+微信對接
- Hybrid 開發與Flutter: Html5專案實戰+Flutter進階
其實這個培訓清單我個人覺得是目前來說總結得比較好的Android進階資料。基本涵蓋了各種企業開發必備的新技術:RN、非同步操作RXJava庫、熱修復、外掛化、設計模式、效能最佳化等知識。這些其實都是我們學習的方向標,按照這些清單,自己去找各種資料學習。
其實對於Android基礎的話,不外乎四大元件的基本使用、UI控制元件、佈局的使用、版本控制工具、NDK基礎等等。
當然隨著Android技術的日新月異,Android開發對開發人員的基礎知識的要求就更上一層樓了,比如說:動態許可權管理、Kotlin基礎、Gradle基礎、AndroidStudio基本使用等等。
例子2:(從招聘資訊上了解目前網際網路大廠需要學習的一些熱門技術)
我一直都強調要多看招聘資訊,雖然我們不一定要找工作,但是按照企業的招聘要求,一定程度上也可以知道我們需要什麼,並且同時可以知道,越高階的Android開發有什麼更高的要求。
我們常見的招聘網站有: 智聯招聘、拉勾網、boss直聘等,這裡大家手機上安裝一個對應的APP,吃飯或者上班路上沒事可以翻一翻。那麼如何透過招聘資訊獲取我們需要什麼呢?那麼就需要我們仔細分析下面幾份招聘資訊。
大家第一時間關注的肯定是薪水問題,20K到50K,可以看到,這是一份相對來說比較高階Android開發工程師的招聘資訊,根據上面的要求,其實我們可以知道更多。
一般人可能會覺得這是一份很普通的招聘要求,但是在我的角度來看,可以看出很多有用的資訊,下面我帶著大家來分析解讀一下這份招聘要求吧。
1. Android底層的機制的熟悉,關於這個問題,其實在這裡我並不想談論太多,因為本系列文章的後續我會專門有一篇文章講這個怎麼去學習。一句話總結就是,熟悉Android底層機制,或者說Android原始碼,對上層應用的程式設計開發是有很多好處的,例如寫出高可複用性、高效率、高質量的程式碼。其中,面試常問的原始碼分析有訊息機制、四大元件、程式間通訊、WMS、PMS等等。
2. 各種架構設計能力,這就需要大家多去學習設計模式、各種軟體架構、設計思想上的東西,例如MVC、MVP、MVVM、重構、程式碼規範等等。
3. 在一般的網際網路公司,網路通訊是最重要的,因此我們就有必要掌握基本的Socket程式設計、各種網路請求框架,比如Retrofit2等等,進階的話,就需要自己去研究分析這些框架的原始碼、自己動手用元件化的思想去封裝這些框架,防止程式碼的侵入性等等。
4. 新技術的調研與學習,企業需要的是在儘量少的時間,開發出最優秀的產品,因此新技術是必不可少的。因此我們也需要保持不斷學習充實自己的習慣。這裡提到“研究新技術”,既然是研究,那麼公司為了減少大家的學習成本,肯定是需要你將研究的成功透過文件的形式輸出,以方便其他員工的快速上手,因此這裡隱含了文件的輸出能力。
5. 經驗,關於這個也沒有什麼好說的,很多東西,如果你遇到過就有經驗了,處理起來就比較快了。但是有一些難題你從來沒有遇到過,那麼難度就是無限大的, 經驗需要一點一滴地積累,多向大牛取經往往是實現彎道超車的最好辦法。
6. 成熟專案的工作經驗,這是作為應聘者一個最有閃光點的地方,也是在校生校招的一個最有說服力的點。當然,除了在公司工作,也推薦大家去一些培訓網站上面學習一些專案的實戰影片教程,這也是一種快速學習的方法,但是學習完一定要加以總結,最好以文件、部落格的方式進行輸出,並保持分享,互相交流才能知道自己的錯誤、不足,才能獲取更多技術,進步更加快。
7. 效能最佳化,這是面試常見的問題。效能最佳化跟一個APP的使用者體驗息息相關,很多公司都十分重視這方面的知識。
為什麼高階程式設計師不必擔心自己的技術過時?
程式設計師是吃青春飯的嗎?等我們老了,技術過時了,公司有什麼理由不裁掉我們,去僱一些既有活力、薪資要求又低的年輕人呢?這個老生常談的問題困擾著諸多漸入中年的程式設計師。接下來講解教你如何增強自己的核心競爭力,在知識飛速更新的行業中站穩腳跟,跨過“初級工程師”和“高階工程師”之間的鴻溝。
我認為開發者中有很多我們不太重視的軟技能,這些軟技能都有可能成倍地增加我們工作的影響力(作為個人貢獻者和技術負責人)。這些軟技能包括:
- 程式碼審查禮節;
- 如何優雅地遏制範圍蔓延;
- 如何向其他部門直觀的方式解釋高科技問題;
- 如何在生產任務爆滿和日以繼夜的比賽中保持鎮定自若等。
作為一名程式設計師 ,編碼硬實力固然很重要,但是這些軟技能也同樣重要,這決定著你的核心競爭力的強弱。
高階開發者,會在工作中解決問題,而非製造問題。
他們減少壓力。他們按時完成任務。他們知道如何編寫經得起時間考驗、可維護的程式碼。他們值得更高的工資。他們對專案的方向可以有準確的把控。他們可以發現當前流程中的缺陷,並使每個人都接受他們的想法以進行改進。他們可以指導應屆畢業生。他們處事冷靜,不會在週二與你的最大客戶的電話會議上情緒崩潰、破口大罵。
Android學習的方向
學習一線大廠的各項技術:
大廠是我們的技術先驅,不僅僅是各種技術,還有很多令你大開眼界的使用方法,學習這些有利於自己競爭力的提高,深入理解後也可以提升你的學習效率。
現在競爭這麼激烈,只有透過不斷學習,提高自己,才能保持競爭力。
1.2020大廠面試高頻知識點
- 圖片
- 網路和安全機制
- 資料庫
- 外掛化、模組化、元件化、熱修復、增量更新、Gradle
- 架構設計和設計模式
- 效能最佳化
- Android Framework
- Android優秀三方庫原始碼
2.Jetpack架構元件從入門到精通
- Android Jetpack - Navigation
- Android Jetpack - Data Binding
- Android Jetpack - ViewModel & LiveData
- Android Jetpack - Room
- Android Jetpack - Paging
- Android Jetpack - WorkManger
- Android Jetpack架構元件之Lifecycle
- Android Jetpack Compose 最全上手指南
3.Framework精編核心解析
主要內容包含:
- 深入解析Binder
- 深入解析Handler
- Dalvik VM 程式系統
- 深入解析 WMS
- PackagerManagerService
4.Kotlin強化實戰(附Demo)
- 第一章 Kotlin入門教程
- 第二章 Kotlin 實戰避坑指南
- 第三章 專案實戰《Kotlin Jetpack 實戰》
- 從一個膜拜大神的 Demo 開始
- Kotlin 寫 Gradle 指令碼是一種什麼體驗?
- Kotlin 程式設計的三重境界
- Kotlin 高階函式
- Kotlin 泛型
- Kotlin 擴充套件
- Kotlin 委託
- 協程“不為人知”的除錯技巧
- 圖解協程:suspend
5.Android設計思想解讀開源框架
- 熱修復
- 外掛化
- 元件化框架設計
- 圖片載入框架
- 網路請求框架
- RXJava 響應式程式設計框架設計
- IOC 架構設計
- Android架構元件Jetpack
6.NDK模組開發
- NDK 模組開發
- JNI 模組
- Native 開發工具
- Linux 程式設計
- 底層圖片處理
- 音影片開發
- 機器學習
定期面試:
光學習了大廠的技術還不夠,如何瞭解當下Android市場需要哪些技術呢?
定期的面試足以讓你瞭解當下市場需要哪些技術,也更加容易確定自身的短板在哪,同時,也可以督促自己學習提升(小夥子,你瞭解的技術有點落伍了呀…)
萬一拿到了高薪Offer,豈不是更賺?
多看大佬的學習筆記,學習大佬的設計思想:
只要是程式設計師,不管是Java還是Android,如果不去閱讀原始碼,只看API文件,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。
真正最能鍛鍊能力的便是直接去閱讀原始碼,不僅限於閱讀各大系統原始碼,還包括各種優秀的開源庫。
以上這些內容均免費分享給大家,需要完整版的朋友, 。或者點選 【 】 檢視獲取方式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983917/viewspace-2777882/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 學習嵌入式的開發線路,新手怎麼學習嵌入式?
- Java學習路線圖應該怎麼學習?Java
- Android 開發者學習路線(2020 版)Android
- web前端開發怎麼樣學習?看這份web前端學習路線Web前端
- HarmonyOS應用開發學習路線
- iOS開發學習路線iOS
- 適合普通大學生的 Java 後端開發學習路線Java後端
- 怎樣系統的學習linux?Linux學習路線!Linux
- Java/後端學習路線Java後端
- python後端學習路線Python後端
- Java後端學習路線Java後端
- 小白如何學習大資料開發,大資料學習路線是怎樣的?大資料
- Android開發學習之路Android
- 自學JAVA學習路線是什麼?Java
- Web前端開發學習路線圖Web前端
- Android 學習筆記雜記Android筆記
- AI 學習路線:從Python開始機器學習AIPython機器學習
- 開發十年,留下最完整的Java架構學習路線,學完年薪65WJava架構
- 給學妹的 Java 學習路線Java
- 初學者應該怎麼學習前端?web前端的發展路線大剖析!前端Web
- Android開發學習之路03Android
- Android 開發學習筆記Android筆記
- 初學者怎麼學懂前端?Web前端原始碼、框架學習路線圖前端Web原始碼框架
- 初學者怎麼入手學習雲端計算?雲端計算學習路線圖分享
- web前端開發自學路線是怎樣的?html+css+JavaScript的學習方法Web前端HTMLCSSJavaScript
- Armv8/Armv9架構的學習大綱-學習方法-自學路線-付費學習路線架構
- 前端學習路線前端
- Vue學習路線Vue
- JAVA學習路線Java
- Python學習路線Python
- Oracle學習路線Oracle
- 如何學習Python?Python學習入門路線Python
- Linux再學習(一)-學習路線規劃Linux
- C/C++學習路線———學習筆記C++筆記
- 零基礎學it怎麼學?Python開發程式設計學習Python程式設計
- Java技術相關學習路線,學習Java後薪資如何?Java
- web前端開發自學路線:html+css+JavaScript的學習方法Web前端HTMLCSSJavaScript
- 怎麼學習