1. 程式人生 > >一個Android 架構師的成長之路

一個Android 架構師的成長之路

前言

總所周知,當下流行的程式語言有Java、PHP、C、C++、Python、Go等。其中,穩坐榜首的仍然是Java程式語言,且在以面向物件思想佔主導的應用開發中,Java往往成為其代名詞。Java語言的背景強大,開發者眾多,一直髮展都不錯。從普遍的企業的角度來看,存在的問題是:後臺被認為是技術核心,客戶端卻被認為技術含量不高,甚至小企業會讓後臺人員順便開發簡單的客戶端,或者讓後臺的架構師管理客戶端幾個人。事實上,客戶端技術和後臺技術的側重點完全不同,連程式語言都不同(Android使用Kotlin程式語言的逐漸普及)。另外,後臺的人跟使用者相對離得太遠,而客戶端是直接面向用戶的,與產品人員溝通更直接。所以,我認為企業產品真的是為了給使用者用,那麼選客戶端背景的人員去做移動架構師更好一點。

一個Android 架構師的成長之路

 

一、移動架構師職位介紹

(1)移動架構師公認的職位描述是什麼?

事實上並沒有非常準確的職位描述。不過我可以嘗試給出了一個:

設計當前架構。包括新技術方案的制定或評審。

改進過去架構。根據業務的發展或者技術債務的原因,重構當前技術方案並且推進實施。

前瞻未來架構。技術方案調研和分析,隨時準備好對新技術的使用。

推進技術方案實施。解決實施過程中具體的技術問題。

技術分享和培訓。推進技術交流和新技術的使用。

人員的招聘。技術面試。

(2)移動架構師是否還要日常編碼,如果需要,比例是多少?

雖然帶有管理色彩,但仍然以技術為主。所以程式碼是必須要寫的,架構師不寫程式碼,就成管理了。寫程式碼的比例應該至少是 40% 的工作時間以上。

(3)移動架構師的成長路線是什麼樣的?

可以先試著解決當前業務中的技術問題,然後再培養自己的技術前瞻性,為業務的未來儲備技術。架構師立命的根本還是技術,所以在移動開發技術上研究的事情都要嘗試去做。另外,技術人員通常不善於表達,而架構師的很多工作(例如技術分享,培訓,面試,推進技術方案實施)都是需要溝通工作的。另外優秀的移動架構師能夠對業界都有所影響。所以,作為一個移動架構師,鍛鍊自己的表達能力也是必要的一條成長路線。

(5)移動架構師是否需要學習前端、後端開發技術?

這等於問要不要擴充套件技術“廣”度,而架構師標籤之一就是“廣”。不過是看個人的精力能夠達到多大的廣度和深度了。

(6)移動架構師是否需要設計整個 C/S 架構?

這點倒是誇張了,配合後臺人員設計應該是可以的,總負責的話,挑戰略大了一些。

(7)移動架構師如何進行團隊溝通工作?

1、與CTO總監的合作。首先從思想上要認識到兩者是利益完全一致的。總監為架構師拓展上升空間,而架構師將總監的規劃切實落地。保證足夠的溝通,可以約定一個固定溝通機制,比如每2週一次,讓雙方在思想上保持同步和一致。架構師應該帶著方案和CTO溝通,講清楚A、B方案的優缺點。可以讓CTO根據從上層去考慮做決定,就算架構師本職的決策,也最好先取得CTO的認可。如果出現意見分歧,最好的方式是先擱置,等條件成熟了,很可能意見會趨於一致。如果不能等,只要CTO的意見不是太離譜,還是按照CTO的意見執行比較好。如果有十足把握,認為自己的方案很好,那麼也要得到CTO的許可和諒解,否則千萬不要擅自去做,因為最後的鍋不是你一個人能背的。

2、與其他部門的合作。產品部門一般不懂技術,架構師的作用就是幫他解決這個問題,這個很好理解。在理解了產品需求後,進行技術可行性分析。在不改變整體方案目標的前提下,從技術的角度,提出改善意見,修改設計,目的是方便實現。與後臺架構師搞好合作,從後臺到前臺,整條鏈路太長,一個人管不過來,需要兩人好好合作,共同把好技術關。拉攏好測試部門,要當作開發的朋友看待,是自己人。如果關係夠好,考慮讓測試人員在“自測”階段提前介入,幫助開發人員提供測試案例。運營部門的關係稍微遠了一點,關鍵點是及早介入。防止臨上線了,加入一堆的運營需求,就可能影響產品投放時間了。總之與其他部門以合作為主,掙取及早溝通,將風險消滅在反生之前。

3、與團隊成員的合作。移動開發團隊人數不多,但是部門和開發語言多。有IOS,android,還有JS和Java閘道器。如果一個部門超過3個人,應該設定一個Team-Leader,進行授權實現間接管理。對於自己擅長的技術親自去實現,和兄弟們一起戰鬥,深入到團隊中。思考團隊提升和儲備,應讓中層人員在一線作戰,高層人員作指導,初層人員打醬油學習。對於自己不擅長的技術,可以採用“結對程式設計”的方法,讓兩個開發者在一臺電腦上開發,一個編寫另一個觀察,程式基本是相同的,還是能夠理解和參與討論的。與幾個Leader,要重點在於溝通,在大方向上保證思想一致,給他們空間適量授權,並協助他們做出成績。重點注意團隊的正能量以及活躍的氣氛,人不是機器,和諧的氛圍比冰冷的制度和懲罰要好得多。記錄團隊的功績和成果,提高團隊成員集體榮譽感,將奮鬥目標引導到“自我價值”上來。需要更多Android資料的加qq群853967238獲取

二、Android架構師技術介紹

  • 架構與設計
  • 設計模式
  • 重構
  1. 網路程式設計框架
  2. TCP格式三次握手與四次揮手
  3. HttpClient
  4. HttpURLConnection
  5. Volley
  6. OkHttp
  7. Retrofit
  • UI架構模式
  1. MVC
  2. MVP
  3. MVVM

研發工具

整合開發環境

  • Android Studio
  • Sublime Text

版本控制系統

  • svn
  • git
  • gitlab
  • github
  • mercurial

除錯工具

  • ADB
  • DDMS
  • Stetho
  • LeakCanary
  • ClassyShark
  • Postman
  • markman

CodeReview工具

  • Gerrit
  • Phabricator

構建工具

  • Gradle
  • Buck

效率工具

  • 番茄鍾
  • Markdown
  • WakaTime
  • Focus Matrix
  • evernote
  • Pocket

移動安全

  • 程式碼和資源混淆
  • 反編譯
  • 金鑰管理
  • 安全編碼
  • 應用加固

專項技術

  • App 瘦身
  • MultiDex
  • 外掛化
  • 推送技術
  • Crash 統計
  • 函數語言程式設計
  • 啟動保護
  • 線上熱修復
  • AOP
  • React Native
  • Hybrid
  • SDK化
  • 依賴注入

軟技能

  • 知識管理
  1. 團隊Wiki
  2. 團隊論壇
  • 時間管理
  1. 四象限法則
  2. 帕累托法則
  3. 番茄工作法
  • 目標管理
  1. Smart 法則
  2. 思維導圖
  3. 甘特圖
  • 專案管理
  1. 邊界思維
  2. 過程思維(WBS)
  3. 風險思維
  4. 干係人思維
  5. 整合溝通
  • 團隊管理
  1. 招聘面試
  2. 梯隊培養
  3. 技術規劃
  4. 團隊規範
  • 個人管理
  1. 技術部落格
  2. 技術分享
  3. 會議演講
  4. 領導力
  5. 持續學習

周邊技術

  • 產品互動設計
  • 後端技術
  • HTML5
  • iOS

移動測試

單元測試

  1. JUnit
  2. Robolectric
  3. Mockito

UI自動化測試

  1. Monkey
  2. MonkeyRunner
  3. UIAutomator
  4. Robotium
  5. Espresso
  6. Appium

持續整合

  1. Jenkins
  2. Travis CI
  3. fastlane

靜態程式碼掃描

  1. CheckStyle
  2. FindBugs
  3. PMD
  4. Android Lint
  5. Infer

效能優化

  • 啟動優化
  • 程式碼優化
  • 記憶體優化
  • 電量優化
  • 佈局優化
  • 網路優化

程式語言

  • Java
  • C
  • C++
  • Javascript
  • Groovy
  • Kotlin

我給大家準備了一個明確的安卓架構師學習路線以及在文章最後準備了學習資料

  • JAVA語言進階與Android相關技術核心

一個Android 架構師的成長之路

 

  • App開發框架知識體系(App亦物件)

一個Android 架構師的成長之路

 

  • Android前沿技術

一個Android 架構師的成長之路

 

  • Android App全方位效能調優

一個Android 架構師的成長之路

 

  • 微信小程式與Hybrid混合開發

一個Android 架構師的成長之路

 

  • 高階進階必備篇

一個Android 架構師的成長之路

需要更多Android資料的加qq群853967238獲取