程序員的三門課:技術精進、架構修煉、管理探秘

於君澤 等

  • 出版商: 電子工業
  • 出版日期: 2019-10-01
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • ISBN: 7121373777
  • ISBN-13: 9787121373770

立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

我們都有一個共同的夢想——成為更棒的程序員,但是如何做?如何學習和精進自己的技術?如何做業務分析和架構設計?如何做技術管理?本書就廣大程序員都很關註的問題提供一些思路和方法。本書內容分為三大篇:第1篇介紹程序員的技能成長路徑,介紹如何通過學習來加速成長,並講解非常重要的業務分析和設計知識;第2篇詳細介紹了架構修煉中的必備架構思維模式、架構設計過程,還通過真實案例剖析了架構設計的核心要素及關註點,以及如何通過架構設計來把控質量和風險;第3篇總結了做技術管理的訣竅,揭秘如何從準備做技術管理到實現自我管理再到實現團隊管理。本書適用於即將或者正在從事IT相關開發工作,卻不知如何提升自己,希望通過適當的學習方法精進技術的初級程序員;也適用於具備一定架構設計經驗,想進一步系統化提升架構設計能力的中級程序員;以及有一定技術積累,想從事技術管理卻不知如何著手的高級程序員。

作者簡介

於君澤

某互聯網公司技術專家,在分佈式系統架構設計、高並發系統設計、領域建模、研發管理、內建質量等方面有較多心得,樂於交流和分享,曾創立技術社群“中生代技術”。維護技術公眾號“技術瑣話”。

李偉山

現任某人工智能公司技術總監,江湖人稱“山哥”,在分佈式系統架構設計、高並發系統設計、系統穩定性保障等方面積累了豐富的實踐經驗,擅於利用數據分析解決實際問題,對新技術有濃厚的興趣,樂於分享。個人技術公眾號:技術方舟。

張洪亮

網名Hollis,知名技術博主,個人技術博客(http://www.hollischuang.com)閱讀量達數百萬。90後程序員,2015年畢業於哈爾濱理工大學,現任某互聯網公司技術專家,專注於Java研發、技術架構及程序員的成長等方面。個人技術公眾號:Hollis。

彭首長

L熊貓優福聯合創始人,聚美優品前技術總監。在團隊管理、領域設計、分佈式架構、高並發設計、IoT架構等方面有豐富的實踐經驗,擅長行業分析,對新技術高度敏感,熱衷於技術實踐且樂於分享。

劉朋

高績效團隊教練,教練型領導,中生代技術社區聯合創始人,北京大學理學學士、工學碩士。現就職於中國移動(成都)5G產業研究院,曾任諾基亞通信(成都)有限公司研發經理。在敏捷實踐、高績效團隊教練技術、技術團隊管理等方面積累了豐富的經驗,並總結出一套特別適合程序員突破自身瓶頸、快速成長的領導力模式。

目錄大綱

第1篇技術精進

第1章程序員技能與成長\t2

1.1如何學習新的編程語言\t2

1.1.1重點學什麼\t3

1.1.2學習方法\t3

1.2代碼規範與單元測試\t6

1.2.1編碼規範\t6

1.2.2單元測試\t7

1.2.3測試驅動設計\t9

1.3使用靜態代碼分析工具\t18

1.3.1什麼是靜態代碼分析\t19

1.3.2靜態代碼分析工具\t19

1.4代碼審查\t24

1.4.1什麼是代碼審查\t24

1.4.2代碼審查的好處\t24

1.4.3如何做代碼審查\ t25

1.5清單和模板\t29

1.5.1清單實踐\t29

1.5.2產品需求文檔模板\t31

1.6程序員的工作法則\t33

1.6.1工具化法則\t33

1.6.2自動化法則\t38

1.6.3關於文檔的問題\t40

1.6.4關於YAGNI\t40

1.7程序員的工具箱\t41

1.7.1可幫我們提升工作效率的硬件\t42

1.7.2可幫我們提升工作效率的操作系統\t43

1.7.3可幫我們提升工作效率的軟件\t43

1.7.4在線工具\t50

第2章加速成長與學會學習\t56

2.1程序員如何加速成長\t56

2.1.1積極主動\t56

2.1.2空杯心態\t57

2.1.3選擇合適的平台\t57

2.1.4別怕犯錯\t58

2.1.5注意細節\t58

2.1.6時間管理\t58

2.1.7打破邊界\t61

2.1.8寫業務代碼中的成長機會\t61

2.2學會學習\t66

2.2.1高效學習的方法\t67

2.2.2高效學習的途徑\t69

2.2 .3舒適區與小步子原則\t72

2.2.4兩個著名的學習理論\t72

2.2.5終身成長\t74

第3章業務分析與設計\t75

3.1黃金圈法則\t75

3.2 UML建模工具\t77

3.2.1用例圖\t78

3.2.2類圖\t79

3.2.3對像圖\t80

3.2.4狀態圖\t80

3.2.5活動圖\t81

3.2.6序列圖\t82

3.2.7協作圖\t82

3.2 .8構件圖\t83

3.2.9部署圖\t84

3.3業務分析與設計的方法\t85

3.4系統分析與設計的三個發展階段\t87

3.4.1面向數據驅動分析與設計\t87

3.4.2面向對象和服務分析與設計\t88

3.4.3面向問題域分析與設計\t89

3.5面向對象分析與設計\t90

3.5.1什麼是面向對象\t90

3.5.2面向對象的特徵\t91

3.5.3面向對象設計的原則\t91

3.6面向服務分析與設計\t93

3.6.1 Web Service模式\t93

3.6.2 ESB模式\ t94

3.6.3微服務架構\t95

3.7領域驅動設計\t97

3.8領域模型實踐\t102

3.8.1什麼是領域模型\t102

3.8.2領域模型的作用\t102

3.8.3如何進行領域建模\t104

第2篇架構修煉

第4章架構思維\t110

4.1分解\t110

4.1.1分解的作用\t111

4.1.2分解的原則\t111

4.1.3分解的時機\t112

4.2集成\t112

4.2.1常見的集成方式\t112

4.2.2集成的難點\t115

4.3動靜分離\t120

4.4復用\t121

4.4.1系統復用的分類\t122

4.4.2可複用性和可維護性的關係\t123

4.4.3可維護性地複用的設計原則\t123

4.5分層\t126

4.6模式\t127

4.6.1分層模式\t128

4.6.2客戶端-服務器模式\t131

4.6.3主從設備模式\t132

4.6.4管道-過濾器模式\t133

4.6.5代理模式\t133

4.6.6 P2P模式\t134

4.6.7事件總線模式\t135

4.6.8 MVC模式\t136

4.6.9黑板模式\t137

4.6.10解釋器模式\t138

4.7抽象\t139

4.8結構化\t139

4.8 .1結構化的原則\t140

4.8.2結構化分析工具\t140

4.8.3結構化思維的7個環節\t141

4.9迭代\t141

4.10勿做過度設計\t141

第5章架構設計\t143

5.1架構設計概要\t143

5.1.1業務架構\t143

5.1.2應用架構\t145

5.1.3技術架構\t147

5.1.4數據架構\t149

5.2架構設計的流程\t151

5.3架構設計的核心要素\t153

5.3.1性能\t153

5.3.2可用性\t153

5.3.3伸縮性\t154

5.3.4擴展性\t154

5.3.5安全性\t154

5.4高性能設計\t154

5.4.1主要的性能測試指標\t155

5.4 .2性能測試方法\t156

5.4.3性能優化策略\t157

5.5高可用設計\t159

5.5.1高可用性的度量與考核\t159

5.5.2高可用的架構\t160

5.5.3高可用質量保證\t164

5.5.4系統運行監控\t165

5.6可伸縮設計\t166

5.6.1架構的伸縮性設計\t166

5.6.2應用服務的伸縮性設計\t167

5.6.3分佈式緩存的伸縮性設計\t169

5.6.4數據存儲的伸縮性設計\t169

5.7可擴展性設計\t169

5.7.1通過消息降低系統的耦合性\t170

5.7.2通過分佈式服務提供可複用的業務\t170

5.7.3建立開放平台\t170

5.8架構設計的典型案例——訂單系統\t171

5.8.1訂單的基本概念\t172

5.8.2訂單流程\t174

5.8.3訂單系統設計中的挑戰和實踐\t178

5.8.4數據庫優化\t182

5.8.5小結\t185

第6章架構的保障:質量與風險\t186

6.1內建質量體系\t186

6.2從黑天鵝事件到墨菲定律\t189

6.2.1黑天鵝事件\t189

6.2.2蝴蝶效應\t191

6.2.3墨菲定律\t191

6.3軟件質量穩定性之殤\t192

6.3.1業務高速發展帶來的變化\t193

6.3.2問題域的複雜性\t193

6.3.3系統的複雜性\t194

6.3.4技術債問題\t194

6.3.5人、流程、文檔的博弈\t195

6.3.6採用不能掌控的工具和框架\t196

6.3.7質量意識\t196

6.4從康威定律和技術債看研發之痛\t197

6.4.1康威定律\t197

6.4.2通過3個案例來看研發之痛\ t197

6.4.3架構方案和業務形態息息相關\t204

6.5求解質量熵\t206

6.5.1運用敏捷思想\t207

6.5.2運用系統化思想\t208

6.5.3技術債償還計劃\t209

6.5.4抓住合適的時機做架構升級\t209

6.5.5內建質量\t210

6.5.6不迷信,不唯新、不唯上,實踐是檢驗真理的標準\t210

6.5.7複雜的問題域:專項突破\t210

6.5.8領導者的意識\t211

6.5.9創新解決方案\t211

6.6踩過的坑和經驗總結\t212

6.6.1簡單的數字改動導致電商網站搜索功能失靈\t212

6.6.2應用竟然被外部系統拖垮了\t212

6.6.3 HashMap與並發\t213

6.7故障复盤流程及模板\t215

6.7.1什麼是故障复盤\t215

6.7.2為什麼要做故障复盤\t215

6.7.3如何做故障复盤\t216

6.7.4故障复盤模板\t219

6.8監控與告警\t221

6.8.1監控的重要性\t221

6.8.2監控哪些內容\t221

6.8.3告警\t224

6.8.4監控的架構\t224

6.9應急處置\t226

第3篇管理探秘

第7章為成為技術主管做準備\t232

7.1構建自我階段性目標\t232

7.2體驗自己的目標身份\t234

7.3勇於抓住機會\t235

第8章從自我管理轉為管理團隊\t236

8.1什麼是領導力\t236

8.2如何構建領導力\t237

8.2 .1維度1:提供清晰的領導力風格,並以信任感作為基石\t238

8.2.2維度2:了解業務,並帶領團隊達到高績效\t240

8.2.3維度3:發展自己和團隊成員\t240

8.2.4維度4:塑造未來\t241

8.3讓自己成為T型人才\t242

8.4高效時間管理\t243

8.4.1確定在做的事情符合自己的目標\t244

8.4.2隨時應用80/20法則\t246

8.4.3創造大塊時間\t247

8.5遇到“不服管”的員工怎麼辦\t249

8.5.1每個人都是不錯的\t250

8.5.2建立親和與信任感\t251

8.5.3從績效評估到建設性反饋\t255

8.6如何處理衝突\t261

8.6.1了解產生衝突的原因\t261

8.6.2正確看待衝突\t262

8.6.3處理衝突\t263

8.7引導員工主動工作\t264

8.8如何從帶10個人到帶100個人\t266

8.8.1在管理上面對的挑戰\t267

8.8.2從管理1.0到管理2.0\t269

8.9如何對上管理\t276

8.9.1做好對上的預期管理\t277

8.9.2及時匯報\t277