App架構師成長路線

非同步社群發表於2018-04-12

點選關注 非同步圖書,置頂公眾號

每天與你分享 IT好書 技術乾貨 職場知識​

9ccc0ca9gy1fq0v25dcd4j20u00k00v4.jpg

​參與文末話題討論,每日贈送非同步圖書

——非同步小編

架構師,軟體技術領域一個高大上的名詞,業界有言“人人都是產品經理”,卻很少聽到“人人都是架構師”。其本身涉及的複雜龐大的跨領域知識體系除外,對於架構一詞,其實很難去完整地定義,我們也沒必要過於糾結,就如我們為什麼要登山,因為山在那裡,執著前行,或許還未曾知曉路在何方,抑或你都不曾思考要去何方,但至少你已經在路上,while(!(succeed=try()))。成長為架構師是一個過程,而不是一個結束,現在,就讓我們開啟移動應用架構師之路吧。

 什麼是架構師? 

架構師是為滿足某種架構設計的目標而從整體上構思把控的角色,在軟體行業,又會細分很多,如系統架構師、企業架構師、應用架構師、業務架構師等,本書是針對App應用架構師進行闡述的。構建一個完美的架構,一般需要具備下述特徵。

  • 具備客戶要求的功能。
  • 能夠在要求的工期內安全地構建。
  • 效能足夠好。
  • 可靠。
  • 可用,且使用時不會造成傷害。
  • 安全。
  • 成本可接受。
  • 符合法規標準。
  • 將超越前任及其競爭者。

總結一下,架構的核心就是功能、安全、效能和穩定。其實,在具體架構實踐中,我們很難完整系統地全部完成上述特徵,架構是一種折中,“架構師玩的是折中的遊戲,對於一組給定的功能需求和品質需求,沒有唯一的正確架構和唯一的正確答案”。作為架構師的我們,需要考慮的是如何做得更好,如何避免負面影響。

App架構師的核心職責包括選型規劃、架構設計、技術攻關、溝通協調、疑難攻略等,這些對架構師來說應該都是通用的。對美的追求,我認為是架構師最崇高的目標。

 程式設計師發展路線

其實地上本沒有路,走的人多了,也便成了路。——魯迅

踏上架構師之路前,我們先來聊聊程式設計師的發展路線。先看看國內的大公司的程式設計師發展路線,筆者整理了大致的職級體系對比圖,僅供參考,如圖1-1所示。​

​圖1-1 職級體系​圖1-1 職級體系

結合自身發展,我覺得程式設計師的發展路線應該主要有兩條——專家線和管理線,管理線上,不同公司策略不同,大多都是從中間的某個級別道路分叉為管理,如圖 1-2 所示。不同級別對應的角色和承擔的責任自然不一樣,例如資深工程師,需要在技術的深度和廣度兩維度上都有所積累和沉澱,而架構師除了技術本身外,技術之外的其他領域知識也是必須沉澱的。當然,從長遠一點說,若需要結合具體的事業路線,這兩條路在東西南北4個方向的事業路可以分散,分散到四象限矩陣,分別對應了職員、創業、SOHO 和投資,如圖1-3所示。​

​圖1-2 程式設計師職業路線​​圖1-2 程式設計師職業路線​

​圖1-3 程式設計師事業路線​圖1-3 程式設計師事業路線

 App架構師技能矩陣  

前面闡述了程式設計師發展路線,本節我們來聊聊作為架構師的你或者正在架構師路上的你,需要怎樣的技能矩陣。

App架構師畫布

在闡述技能圖譜之前,我們先借鑑《精益創業實戰》[3]一書中的精益畫布商業模式,來創造一幅我們的App架構師畫布,如圖1-4所示。認識自己,這是開始做任何事情的基礎。職業定位和事業定位,參考圖1-2和圖1-3所示,自己是不是真的打算踏入架構師這條路?目標和定位清晰後,該如何開始呢?毋庸置疑,就先從本書開始吧,圖1-5為App架構師應該具備的基本技能,那麼,開啟你的瘋狂成長之路吧。成長之路離不開學習,學習又必須有一定的方法,如何正確地學習,請參考本書“架構師那點事”章節內容。光學不練也不行,你需要一個平臺或者一個專案去演練,去實踐,走過的路才是你自己的路,讓我們培養架構師思維,朝著架構師前行。最後,說到得與失?任何事情都存在一定的機會成本,要提前考慮清楚。​

​圖1-4 App架構師畫布​圖1-4 App架構師畫布

技能圖譜

將技能圖譜/技能矩陣用於自己的學習和成長,這是筆者嘗試過的非常不錯的一種方式,推薦給讀者,值得大家體驗。針對App架構師的技能圖譜,筆者進行了完整梳理,如圖1-5所示,本書後面內容基本會覆蓋其中大部分知識點。誠然,任何單方面的思考和決策都是不全的、片面的,僅供參考,同時推薦大家參閱Programmer Competency Matrix[4]和七牛雲的漫畫電子書《架構師技能矩陣》[5]。

​圖1-5 App架構師技能圖譜​圖1-5 App架構師技能圖譜

該讀什麼書?

目前,市面關於App開發的書籍,較多以片面的技術開發為切入點,未能對移動應用開發進行系統性的講解,儘管可以令讀者在短時間內掌握App開發方法,但是隨著App使用越來越多,App架構越來越複雜,從長遠來看,我們需要的不只是普通的App開發人員,更需要一個能從架構體系上對App開發有全面瞭解並能全程掌控的技術人員。這裡推薦一本書《App架構師實踐指南》

本書第一篇從App系統架構師的成長路線輕鬆切入,一目瞭然地讓讀者明白App架構師到底是做什麼的,然後通過App基礎語法、開發工具等基礎知識,闡述了App開發的基本功。第二篇正式展開描述了架構師必備的關於App開發過程中所需的綜合技巧,其中涵蓋了App常用模組設計、App架構和重構、質量和穩定性、效能優化、安全逆向及熱門技術等內容,深入淺出地將一個合格架構師應該掌握的內容娓娓道來。第三篇從團隊合作的角度描述了App架構師如何高效地開發和管理一個App專案,並使該專案具有可持續發展的可能。第四篇則以輕鬆的口吻向所有希望通過本書完成App“碼農”向“架構師”昇華的程式設計師們介紹了一些心得體會。

移動網際網路是未來物聯網世界和大資料世界的基礎設施,App開發是移動網際網路目前產生價值最核心的技術。我們有理由相信,隨著App開發需求的日益強盛,App架構師也會越來越得到重視,併成為App開發產業的中堅力量,那麼這本書就能給予這些人希望和助力。

9ccc0ca9gy1fq9px61tssj209q0ataan.jpg

​《App架構師實踐指南 》

  SkySeraph 潘旭玲 著

點選封面購買紙書

一本講解從程式設計師轉變為架構師需要了解的技能和思想,明確地給程式設計師指引了移動架構師成長的路線,是想成為架構師的程式設計師實用指南。

全面介紹了在移動應用開發的架構設計和效能優化方面的知識,是架構師的必備書籍 。講述了移動應用架構師需要了解的技能、思想等整體的發展方向,是移動架構師成長的路線圖。

讀者不僅可以學習到移動應用的開發技術,更能收穫到在實戰專案中會用到的各種工程化的知識,是架構師的學習寶典 。

本書目錄:

第一篇 基 礎 篇 

第1章 App架構師成長路線 2 

1.1 架構師定義 2 

1.2 程式設計師發展路線 3 

1.3 App架構師技能矩陣 5 

1.3.1 App架構師畫布 5 

1.3.2 技能圖譜 5 

1.4 本章小結 6 

1.5 推薦資料 7 

第2章 App基礎語法系列 8 

2.1 程式語言 8 

2.1.1 那些年,那些語言 9 

2.1.2 聊聊Swift 11 

2.1.3 Swift 3和Java 8新特性 13 

2.2 物件導向思想 14 

2.2.1 程式設計正規化 14 

2.2.2 封裝、繼承與多型 15 

2.2.3 內部類的使用和思考 17 

2.3 執行緒與程式 19 

2.4 反射、註解與泛型 21 

2.4.1 反射與註解 21 

2.4.2 泛型 23 

2.5 本章小結 24 

2.6 推薦資料 25 

第3章 App開發工具系列 26 

3.1 IDE 26 

3.1.1 Android Studio 27 

3.1.2 Xcode 29 

3.2 編譯除錯 29 

3.3 版本管理 31 

3.3.1 程式碼管理 31 

3.3.2 Git分支管理 32 

3.4 產品設計 34 

3.5 程式設計師珍藏 35 

3.5.1 抓包工具 36 

3.5.2 ADB 36 

3.5.3 Chrome開發外掛 37 

3.6 本章小結 38 

3.7 推薦資料 38 

第4章 App SDK使用系列 39 

4.1 從Lifecycle說起 39 

4.2 大話UI 41 

4.2.1 關於佈局 41 

4.2.2 常用控制元件 41 

4.2.3 自定義View 42 

4.3 儲存和網路 43 

4.4 本章小結 43 

4.5 推薦資料 44 

第5章 開源庫的選擇和使用 45 

5.1 關於開源 46 

5.2 開源庫的選擇 46 

5.2.1 開源專案選擇 46 

5.2.2 關於License 47 

5.3 開源庫的使用 48 

5.4 本章小結 49 

5.5 推薦資料 49 

第二篇 核 心 篇 

第6章 App常用模組設計 52 

6.1 基礎元件庫 52 

6.1.1 構建你的基礎元件庫 53 

6.1.2 不得不說的圖片庫 54 

6.1.3 淺談網路庫和加密 61 

6.2 常用業務模組 65 

6.2.1 啟動引導模組 65 

6.2.2 註冊登入模組 66 

6.2.3 運營統計模組 67 

6.3 編譯打包 68 

6.3.1 打包方式和流程 68 

6.3.2 Gradle實用技巧 71 

6.4 版本適配 75 

6.4.1 iOS App適配 76 

6.4.2 Android App適配 77 

6.5 本章小結 78 

第7章 App架構和重構 79 

7.1 從元件和模組說起 80 

7.2 元件化、模組化和外掛化 80 

7.2.1 三個概念 80 

7.2.2 App外掛化 82 

7.2.3 App元件化 83 

7.3 UML基本功 86 

7.3.1 UML工具 86 

7.3.2 常見UML圖 87 

7.3.3 UML例項 88 

7.4 大話設計模式 88 

7.4.1 六大原則 89 

7.4.2 設計模式總覽 89 

7.4.3 設計模式實踐 90 

7.5 介面設計 91 

7.5.1 API,What and Why 92 

7.5.2 How API 92 

7.6 常見架構模式 95 

7.6.1 MVX模式 95 

7.6.2 常見軟體架構 97 

7.6.3 從元件化角度看App架構 100 

7.7 重構未眠夜 102 

7.7.1 重構概覽 102 

7.7.2 架構重構 103 

7.7.3 程式碼重構 104 

7.8 架構設計夠了麼 106 

7.9 本章小結 106 

7.10 推薦資料 106 

第8章 App質量和穩定性系列 108 

8.1 質量標準和穩定性指標 109 

8.1.1 應用的核心質量 109 

8.1.2 穩定性衡量指標 109 

8.2 質量和穩定性手段 112 

8.2.1 質量監控 112 

8.2.2 問題處理原則 115 

8.2.3 App持續整合 115 

8.2.4 程式碼質量監測 125 

8.3 笑談Crash 138 

8.3.1 Crash基礎和原理 138 

8.3.2 Crash收集和統計 142 

8.3.3 Crash分析 150 

8.4 測試專場 160 

8.4.1 測試綜述 161 

8.4.2 相容性測試 165 

8.4.3 效能和安全性測試 174 

8.4.4 自動化測試 174 

8.4.5 A/B Testing 180 

8.4.6 程式碼覆蓋率 182 

8.4.7 線上演練 183 

8.5 本章小結 183 

8.6 推薦資料 183 

第9章 App效能優化系列 185 

9.1 效能分析 186 

9.1.1 效能維度 186 

9.1.2 效能優化 186 

9.1.3 效能測試平臺 187 

9.2 硬體效能優化 187 

9.2.1 電量資訊獲取 188 

9.2.2 耗電分析 190 

9.2.3 電量優化 191 

9.3 UI和CPU效能優化 194 

9.3.1 基礎原理 194 

9.3.2 流暢度度量 196 

9.3.3 卡頓分析和優化 201 

9.4 記憶體效能優化 206 

9.4.1 記憶體機制和原理 206 

9.4.2 記憶體分析工具 210 

9.4.3 洩露和溢位 210 

9.4.4 記憶體效能優化 212 

9.5 網路效能優化 215 

9.5.1 網路效能概述 216 

9.5.2 網路效能測試和流量度量 218 

9.5.3 網路效能優化 220 

9.6 App包Size優化 223 

9.6.1 App包Size優化概述 223 

9.6.2 App包Size分析 224 

9.6.3 App包Size優化 227 

9.7 App啟動速度優化 230 

9.7.1 App啟動方式和流程 230 

9.7.2 App啟動時間度量 232 

9.7.3 App啟動速度優化 234 

9.8 App程式碼優化 235 

9.9 本章小結 240 

9.10 推薦資料 240 

第10章 App安全逆向系列 242 

10.1 逆向概述 242 

10.1.1 App包組成 243 

10.1.2 逆向工具 245 

10.1.3 Root和越獄 247 

10.1.4 二次打包 247 

10.2 逆向分析 248 

10.2.1 靜態分析 248 

10.2.2 動態分析 249 

10.2.3 Hook和注入 249 

10.3 安全測試 251 

10.4 安全建議 252 

10.4.1 混淆和簽名 253 

10.4.2 加固加殼 262 

10.4.3 安全編碼和隱私 263 

10.5 本章小結 265 

10.6 推薦資料 265 

第11章 App熱門技術 267 

11.1 程式保活 267 

11.1.1 基礎知識 268 

11.1.2 保活方法 271 

11.2 MultiDex 271 

11.3 RxJava 273 

11.3.1 RxJava基礎 273 

11.3.2 RxJava應用例項 276 

11.4 Hybrid 281 

11.5 HotFix 282 

11.6 AOP 283 

11.6.1 OOP與AOP 283 

11.6.2 AOP應用例項 283 

11.7 本章小結 286 

11.8 推薦資料 286 

第三篇 產 品 篇 

第12章 App是如何練成的 290 

12.1 App練成 290 

12.2 開發流程 291 

12.3 也談版本號 292 

12.4 本章小結 293 

第13章 項、產、設、運“四天王” 294 

13.1 專案管理 294 

13.1.1 敏捷Scrum 295 

13.1.2 班車模式 298 

13.2 產品思想 298 

13.2.1 產品經理 299 

13.2.2 產品思維 299 

13.3 設計理念 302 

13.3.1 UI與UX 302 

13.3.2 設計理念 304 

13.4 推廣運營 306 

13.4.1 運營指標 306 

13.4.2 大話推廣 309 

13.4.3 運營之道 310 

13.5 本章小結 310 

13.6 推薦資料 310 

第14章 我的高效團隊 312 

14.1 從程式碼規範開始 312 

14.2 不得不說的Code Review 313 

14.3 晨會,高效一天的開始 315 

14.4 溝通和團建 315 

14.5 別忘了技術分享 316 

14.6 面試,面試,再面試 317 

14.7 自管理,扁平化 318 

14.8 最後,聊聊加班 319 

14.9 本章小結 319 

14.10 推薦資料 319 

第四篇 拓 展 篇 

第15章 架構師那點事 322 

15.1 大話全棧工程師 322 

15.2 架構師思維 323 

15.3 學而時習之 324 

15.4 軟技能 325 

15.5 本章小結 326 

15.6 推薦資料 326 

9ccc0ca9gy1fq9pwjldx6j208n0baab9.jpg

​《深入理解Spring Cloud與微服務構建》

方誌朋 著 

點選封面購買紙書

談到微服務,大家眾說紛紜,但卻很難有一個清晰的概念來描述。微服務不是“銀彈”,我理解的微服務是一種文化,而我們要做的就是將微服務的理念運用到實際開發中。經過一系列的技術選型,最終Spring Cloud憑藉其成熟的元件、完善的一站式解決方案,最終成為了我們落地微服務的選擇。

此時的Spring Cloud相關資料在國內還是鳳毛麟角,沒有完整的中文書籍和教程可以參考,只有官方的英文文件以及網上零零散散的教程可以閱讀。就是在這種情況下,本書的作者方誌朋在公司技術選型以及後續的微服務落地過程中,逐漸有了自己的積累和理解,同時在部落格中連載了“史上最簡單的Spring Cloud教程”。此教程一出,就受到廣大程式設計師的歡迎,因此最終整理為此書。

縱覽全書,文字清晰明瞭,通過理論結合實踐的方式介紹了Spring Cloud的每一個元件的實踐,並解讀了部分原始碼。圖文並茂,語言樸實,不愧為“簡單”之名。本書融合了作者實施微服務的一線經驗和心得,具體指導了Spring Cloud在落地方面的實踐,非常值得參考。

9ccc0ca9gy1fq9pwr77j2j208k0akjse.jpg

​《微服務分散式架構開發實戰》

 龔鵬rico 著

點選封面購買紙書

本書並沒有過多的探討理論性的東西,基於現有成熟框架,圍繞實際專案中遇見的具體需求,以微服務分散式架構的角度去逐一分解並且實現這些需求。掌握這些知識的讀者,完全有能力快速搭建出可靠、高效、靈活的微服務分散式架構。

9ccc0ca9gy1fq9220pqmrj20u00mijvb.jpg

​點選圖片報名

今日話題

說說你對架構師的認識?截止時間4月15日17時,留言+轉發本活動到朋友圈,小編將選出3名讀者贈送非同步新書一本。

延伸推薦

2018年2月新書

2018年1月重磅新書

小學生開始學Python,最接近AI的程式語言:安利一波Python書單

政策升溫:大家都在學大資料,一大波好書推薦

8本新書,送出一本你喜歡的

AI經典書單| 入門人工智慧該讀哪些書?​​​

9ccc0ca9gy1fq0v1kq92bj209k09ka9w.jpg

​長按二維碼,可以關注我們喲

每天與你分享IT好文。

在“非同步圖書”後臺回覆“關注”,即可免費獲得2000門線上視訊課程;推薦朋友關注根據提示獲取贈書連結,免費得非同步圖書一本。趕緊來參加哦!

掃一掃上方二維碼,回覆“關注”參與活動!

點選閱讀原文,購買《App架構師實踐指南》

閱讀原文


相關文章