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

一、移動架構師職位介紹
(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架構師技術介紹
- 架構與設計
- 設計模式
- 重構
- 網絡編程框架
- TCP格式三次握手與四次揮手
- HttpClient
- HttpURLConnection
- Volley
- OkHttp
- Retrofit
- UI架構模式
- MVC
- MVP
- 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
移動安全
- 代碼和資源混淆
- 反編譯
- 密鑰管理
- 安全編碼
- 應用加固
專項技術
- App 瘦身
- MultiDex
- 插件化
- 推送技術
- Crash 統計
- 函數式編程
- 啟動保護
- 在線熱修復
- AOP
- React Native
- Hybrid
- SDK化
- 依賴注入
軟技能
- 知識管理
- 團隊Wiki
- 團隊論壇
- 時間管理
- 四象限法則
- 帕累托法則
- 番茄工作法
- 目標管理
- Smart 法則
- 思維導圖
- 甘特圖
- 項目管理
- 邊界思維
- 過程思維(WBS)
- 風險思維
- 干系人思維
- 整合溝通
- 團隊管理
- 招聘面試
- 梯隊培養
- 技術規划
- 團隊規范
- 個人管理
- 技術博客
- 技術分享
- 會議演講
- 領導力
- 持續學習
周邊技術
- 產品交互設計
- 后端技術
- HTML5
- iOS
移動測試
單元測試
- JUnit
- Robolectric
- Mockito
UI自動化測試
- Monkey
- MonkeyRunner
- UIAutomator
- Robotium
- Espresso
- Appium
持續集成
- Jenkins
- Travis CI
- fastlane
靜態代碼掃描
- CheckStyle
- FindBugs
- PMD
- Android Lint
- Infer
性能優化
- 啟動優化
- 代碼優化
- 內存優化
- 電量優化
- 布局優化
- 網絡優化
編程語言
- Java
- C
- C++
- Javascript
- Groovy
- Kotlin
我給大家准備了一個明確的安卓架構師學習路線以及在文章最后准備了學習資料
- JAVA語言進階與Android相關技術內核

- App開發框架知識體系(App亦對象)

- Android前沿技術

- Android App全方位性能調優

- 微信小程序與Hybrid混合開發

- 高級進階必備篇

關注+轉發,私信關鍵詞 【資料】即可獲取更多有關安卓開發的資料(面試資源與經驗總結,BAT內推,高級UI、性能優化、架構師課程、NDK、混合式開發全方 面的 Android高級實踐技術講解以及在線答疑等。)!
