Android 架構師研發技術進階之路:不同階段需要掌握的那些技術及軟技能

前言

移動研發火熱不停,越來越多人開始學習android開發。但很多人感覺入門容易成長很難,對未來比較迷茫,不知道自己技能該怎麼提升,到達下一階段需要補充哪些內容。市面上也多是談論知識圖譜,缺少體系和成長節奏感,特此編寫一份android研發進階之路,希望能對大家有所幫助。

這篇文章裏,我們只談技術,不談軟技能。

在這裏我把攻城獅分成初級、中級、高級和資深四個階段,分別對研發設計能力、工具使用、系統原理和架構等作出要求。

初級

我對初級研發攻城獅的定義是掌握基礎的android知識,能夠獨立完成一個功能。這個層級大部分人通過看一些資料書籍再經過項目練習很快可以達到。

需要的技能有:

1. 掌握android 四大組件知識,深入瞭解相關生命週期;對於Application、Fragment、Intent也必須掌握。
2. 掌握android 基本佈局和控件的屬性和使用,常用佈局有LinearLayout\RelativeLayout\ConstraintLayout等,控件有TextView\ImageView\RecyclerView\ScrollView等。
3. 對android的資源訪問使用有基本瞭解,瞭解android針對不同國家、語言、屏幕、API的適配原理。
4. 掌握android系統服務和工具類的使用,對網絡訪問和數據庫操作有基本認知。
5. 熟練掌握研發工具,如IDE、模擬器、網絡代理、日誌等。

中級

而到達中級就需要付出一些努力了,需要了解更多知識,可以仿照開源庫去造輪子練習。中級工程師要能夠熟練完成功能研發。需要的技能有:

1. 熟悉SOLID基礎設計原則,掌握23種設計模式。
2. 對於研發語言特性java/kotlin有深入理解,如反射、動態代理、apt等。
3. 對android架構有基礎瞭解,對apk結構和打包原理有深入瞭解。
4. 對於android各個版本特性有基本瞭解,如MD設計、權限管理、doze模式等。
5. 熟練掌握各種研發調試工具,如git、gradle、mat、layout inspector等。
6. 掌握Handler\AsyncTask原理,熟悉多線程開發。
7. 對繪頁面制原理有初步理解,能夠實現一個複雜自定義控件。
8. 能夠熟練掌握開源庫的使用,如圖片庫(Glide\Fresco)、網絡庫(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等。
9. 熟悉圖片優化常用方法,避免編寫內存泄漏的代碼。

高級

如果到達中級,那麼恭喜你已經可以應付大部分情況了。但要能更進一步,就需要深入理解android系統的運行原理,達到融會貫通,可以作爲android端上的架構師。

1. 掌握java高級特性,如JUC、線程池、NIO\BIO等;掌握jvm虛擬機知識,如內存模型、GC原理、類加載機制、線程模型等。
2. 對android運行環境有深入理解,理解android沙盒機制,掌握AIDL原理及Binder通信原理,瞭解app和activity啓動原理。
3. 掌握熱修復原理,各大廠商方案的優缺點。
4. 對於android事件分發有深入理解,重點掌握觸摸事件機制。
5. 深入理解android繪製原理,理解VSYNC和surface機制和窗口原理。
6. 深入理解android動畫原理,包括補間動畫和屬性動畫。
7. 對於android安全機制有基本認知,理解android安全原理。
8. 深入理解端上設計範式思想,如mvc\mvp\mvvm\clean-arch等。
9. 理解架構演進,有良好的分層和拆分思路,掌握模塊化、插件化、動態部署等。
10. 對新技術敏感,理解掌握下一代架構dynamic feature等。

至此,android端研發你已經爐火純青,能夠面對各種情況,達到泰山崩於前而色不變的境界。如果還想繼續前進,就需要突破技術棧,從更高架構層次考慮問題。

資深

而到了資深層次,技術棧已經不再是阻礙。能夠從更高層面看待問題,理解整個系統的設計,作爲系統架構師的角色存在。

1. 理解微服務、SOA思想,對於後端開發有一定涉獵。
2. 瞭解前端研發工具和思想,知道vue react等研發框架。
3. 深入理解跨端技術,如phonegap、weex/RN flutter、小程序快應用等。

總結:

希望你能對照上面的知識圖譜,彼此印證查缺補漏,不斷在技術道路上前行。有什麼疑問和建議歡迎一起探討。

Android架構師之路

在上面,我們探討了成爲系統架構師的硬技術技術指標。但成爲一名合格的架構師,不僅僅對於技術精通即可,還需要有更多的軟實力,討論一些架構以內代碼之外的東西。

在說軟實力之前,我們先探討下架構師的職責。個人理解團隊中架構師不僅僅是寫代碼、設計優化架構,還需要對老闆彙報技術規劃、對團隊宣講,打造技術氛圍、提升團隊整體技術水平,打造團隊技術影響力,負責招聘吸引更多的人加入團隊等。

因此一個合格的架構師至少需要以下三點能力:

觀察力

要做好一名好的架構師,得有細緻的觀察能力,善於發現代碼中存在的問題,可優化的點,以及未來的機會。大部分開發同學經常會忙於開發各種需求,對於技術架構關注並不多,代碼架構往往就在需求迭代中慢慢腐化。

而很多時候,我們就像溫水中的青蛙,感覺不到存在的問題。於是就需要架構師這樣的角色,從獨立的視角看待架構,發現代碼中存在問題。 哪些需求優化,哪些基礎庫可以升級,哪個地方性能存在問題,哪個地方又制約了研發效率。 架構師的獨立視角並不代表不需要懂業務,相反架構師是最需要貼近業務的研發,並且理解業務的來龍去脈和未來發展規劃,制定符合業務發展的架構。

對於技術也同樣要保持敏感度,瞭解社區前沿技術的發展,從中捕獲機會,落地到研發中,保持團隊技術的先進性。

抽象總結能力

並不是所有的問題都需要解決,並不是所有的問題都需要現在解決。

經常有人戲稱架構師是PPT工程師,必然的做PPT是架構師必備的一個能力,背後反映的是架構師嘔心瀝血的思考沉澱。如果工程師只是看到一個個的問題,只聚焦在點上,那麼永遠不可能成長爲架構師。

真正的架構師,能夠從全局系統層面觀察分析問題,並加以抽象總結凝練,輸出一份ppt。從更高更遠的層次看待問題,再將問題層層分解,有節奏的處理問題。對上彙報技術團隊價值,對下同步未來發展,對外宣揚技術成果,對內打造技術成就感。

溝通能力

我們程序員給外界的印象經常是內向沉默寡言不善交際,而實際上程序員是我見過最悶騷的一個團體了: )爲什麼程序員會給其他人留下這種印象呢?

大概是因爲程序員最擅長的就是同機器打交道,而機器是最有邏輯性的,邏輯對了特定的輸入必然返回特定輸出,給人確定性的體驗。而同人打交道就需要考慮各種因素,場合、情感、立場、性別甚至是種族政治等,會有各種意想不到的情況出現。

工作中編碼僅僅是很小一部分,其他部分需要同各個團隊通力協作完成。同業務方PK需求,同老闆溝通思路,同團隊溝通架構落地策略打法,同兄弟部門溝通技術方案,同客戶溝通問題等等。良好的溝通能力是保證架構被認可、能落地的關鍵因素。 同團隊成員進行有效溝通,爲大家答疑解惑,一起探討技術問題,也是保證架構師融入團隊很好的辦法。

總結:

以上僅僅是我目前水準,暫時能想到的一些方面。相比硬實力來說,軟實力通常顯得更加虛無縹緲。只有平時不斷總結、多思考、多交流、多鍛鍊,纔能有效提升軟實力。

最後

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

關於這一點,在我當時確立好Android方向時,就已經開始梳理自己的成長路線了,包括技術要怎麼系統地去學習,都列得非常詳細。

首先是超級詳細得不能再詳細的Android開發學習思維導圖,因爲圖片實在是太大了,所以我就只把二級目錄的內容放出來,更加詳細的你們可以主頁掃微信二維碼獲取

接下來就需要梳理知識,提升儲備了!(Android移動架構師七大專題學習資源)

  • 架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO

  • Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化

  • 360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化

  • 解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack

  • NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發

  • 微信小程序:小程序介紹+UI開發+API操作+微信對接

  • Hybrid 開發與Flutter:Html5項目實戰+Flutter進階

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

然後再是通過源碼來系統性地學習

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

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

刷大廠面試題備戰,增加大廠通過率

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

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

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

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