-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
程序員的底層思維 版權信息
- ISBN:9787121429774
- 條形碼:9787121429774 ; 978-7-121-42977-4
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
程序員的底層思維 本書特色
一本超越具體編程技法的技術書:職場晉升不僅需要技術能力,更重要的是思維能力。本書帶你學會用底層思維解決復雜技術問題,突破職場“天花板”。 一本培養思維能力的通用技能書:打破認知局限,培養通用的思維能力。本書幫你跳出思維定勢,輕松解決生活及工作中遇到的問題。 生活中稀松平常的小故事,作者豐富的個人經驗和案例,輕松生動的語言風格,專業度十足的思維模型,軟件設計“科學+哲學+美學”的完美融合。
程序員的底層思維 內容簡介
本書涵蓋程序員應知應會的16種思維能力,共18章,分為三部分。**部分主要介紹抽象思維、邏輯思維、結構化思維、批判性思維、維度思維、分類思維、分治思維、簡單思維,以及成長型思維等解決日常問題的基礎思維能力。第二部分結合軟件行業的特點,主要介紹解耦思維、契約思維、模型思維、工具化思維、量化思維、數據思維,以及產品思維等專業思維能力。第三部分主要是對上述思維能力的綜合運用實踐。
程序員的底層思維 目錄
**部分 基礎思維能力
01 抽象思維 2
1.1 抽象 = 抽離 + 具象 3
1.2 抽象是哲學思維的基礎 4
1.3 語言的抽象性 5
1.4 軟件設計中的抽象 7
1.4.1 面向對象的核心是抽象 7
1.4.2 抽象設計的評判標準 8
1.4.3 抽象缺失之基礎類型偏執 9
1.4.4 抽象缺失之重復代碼 12
1.4.5 抽象設計要完整 14
1.4.6 不要為了抽象而抽象 15
1.5 抽象的層次性 17
1.5.1 對抽象層次的權衡 17
1.5.2 軟件中的分層抽象 20
1.5.3 強制類型轉換中的抽象層次問題 22
1.5.4 抽象層次一致性原則 24
1.6 鍛煉抽象思維能力 28
1.7 精華回顧 30
參考文獻 30
02 邏輯思維 31
2.1 邏輯就是關系 32
2.2 邏輯三要素之概念 33
2.2.1 概念要明確且清晰 34
2.2.2 制定團隊通用語言 35
2.2.3 管理者的概念技能 36
2.3 邏輯三要素之判斷 37
2.4 邏輯三要素之推理 38
2.4.1 演繹推理:因為,因為,所以 38
2.4.2 歸納推理:從特殊到一般 40
2.4.3 溯因推理:大膽假設,小心求證 41
2.5 邏輯鏈 42
2.5.1 5Why思考法 43
2.5.2 5So思考法 44
2.6 邏輯謬誤 45
2.6.1 偷換概念 46
2.6.2 錯誤假設 46
2.6.3 循環論證 47
2.6.4 以偏概全 48
2.6.5 滑坡謬誤 48
2.7 非理性思考 49
2.8 精華回顧 50
參考文獻 50
03 結構化思維 51
3.1 結構與架構 51
3.2 從無序到有序 52
3.3 金字塔結構 54
3.4 金字塔中的邏輯 57
3.4.1 縱向邏輯關系 58
3.4.2 橫向邏輯關系 60
3.5 如何搭建結構 64
3.5.1 自上而下 65
3.5.2 自下而上 66
3.5.3 上下結合 70
3.6 更多結構思維框架 71
3.7 精華回顧 73
04 批判性思維 74
4.1 理解批判 75
4.2 批判中臺 77
4.2.1 中臺的底層邏輯 77
4.2.2 業務中臺為何低效 77
4.2.3 解決中臺的困境 79
4.3 批判架構師 82
4.3.1 尷尬的架構師 83
4.3.2 尷尬的架構部門 83
4.3.3 人人都是架構師 84
4.4 批判技術管理者 85
4.4.1 技術不作為 86
4.4.2 業務不思考 87
4.4.3 脾氣超火爆 87
4.5 自我批判 87
4.6 精華回顧 89
參考文獻 89
05 維度思維 90
5.1 維度究竟是什么 90
5.2 多維度思考 91
5.3 不做if else程序員 93
5.3.1 多態擴展 94
5.3.2 代碼分離 95
5.3.3 矩陣分析 96
5.3.4 殊途同歸 98
5.4 無處不在的矩陣分析 99
5.4.1 波士頓矩陣 99
5.4.2 訂單要素分析 100
5.4.3 RFM模型 101
5.4.4 邏輯推理中的矩陣 103
5.4.5 相關系數矩陣 104
5.5 設計模式中的維度思維 105
5.6 組織管理中的維度思維 109
5.6.1 人員分工矩陣 109
5.6.2 人才盤點矩陣 110
5.6.3 需求管理矩陣 110
5.7 精華回顧 111
06 分類思維 112
6.1 分類是本能 112
6.2 分類無處不在 113
6.3 分類的本質 114
6.3.1 尋找共同屬性 114
6.3.2 經典分類與概念聚集分類 115
6.3.3 多種多樣的分類角度 116
6.4 沒有“完美”分類 117
6.5 軟件設計中的分類 118
6.5.1 對象分類 118
6.5.2 構建分類 119
6.5.3 領域分類 121
6.6 組織架構中的分類 122
6.6.1 業務型組織 123
6.6.2 職能型組織 124
6.7 互聯網產業分類 125
6.8 精華回顧 127
參考文獻 128
07 分治思維 129
7.1 分治設計模式 129
7.1.1 管道模式 130
7.1.2 責任鏈模式 133
7.2 分布式系統 138
7.2.1 x軸拆分 139
7.2.2 y軸拆分 140
7.2.3 z軸拆分 140
7.2.4 xyz軸拆分對比 142
7.3 分治算法 142
7.4 解決問題的黃金三步 143
7.5 “分治并”的應用 144
7.5.1 流式計算 145
7.5.2 分布式數據庫 146
7.6 精華回顧 149
參考文獻 149
08 簡單思維 150
8.1 簡化是逆向做功 151
8.1.1 壓縮、隱藏與賦予 151
8.1.2 減少選擇 152
8.1.3 奧卡姆剃刀 155
8.2 干掉流程引擎 156
8.3 極簡狀態機的實現 157
8.3.1 領域專用語言的分類 158
8.3.2 極簡狀態機的模型設計 159
8.3.3 連貫接口設計 161
8.3.4 無狀態設計 164
8.3.5 極簡狀態機的使用 165
8.4 COLA的壯士斷腕 166
8.5 復雜的產品沒人用 167
8.6 精華回顧 169
09 成長型思維 170
9.1 走過至暗時刻 170
9.2 成長型思維與固定型思維 171
9.3 大腦的可塑性 173
9.4 培養成長型思維 174
9.4.1 明確努力的意義 175
9.4.2 改變歸因習慣 175
9.4.3 擺脫精神內耗 176
9.4.4 持續精進 178
9.4.5 保持好奇心 179
9.4.6 守住平常心 180
9.4.7 慢也是快 181
9.4.8 掌握表揚的技巧 182
9.5 成功人士的成長型思維 184
9.6 精華回顧 185
第二部分 專業思維能力
10 解耦思維 188
10.1 耦合與解耦 189
10.2 依賴倒置解耦 189
10.2.1 抽象比具體靈活 190
10.2.2 面向接口編程 191
10.2.3 應用與日志框架的解耦 192
10.3 中間層映射解耦 195
10.3.1 DNS的解耦設計 196
10.3.2 CDN的解耦設計 197
10.4 解耦的技術演化 199
10.5 應用架構中的解耦 201
10.6 精華回顧 204
11 契約思維 205
11.1 軟件設計中的規范 206
11.1.1 命名規范 206
11.1.2 異常處理規范 207
11.1.3 架構規范 210
11.1.4 規范的維護 211
11.2 軟件設計中的標準 212
11.2.1 前端標準化之路 212
11.2.2 Java規范 213
11.2.3 API設計標準 216
11.3 依賴契約的擴展機制 218
11.3.1 基于接口的擴展 218
11.3.2 基于配置數據的擴展 220
11.4 掌握標準制定權 222
11.5 精華回顧 225
參考文獻 225
12 模型思維 226
12.1 模型及其分類 226
12.1.1 物理模型 227
12.1.2 數學模型 227
12.1.3 概念模型 228
12.1.4 思維模型 228
12.1.5 模型不能代替實物 229
12.2 UML建模工具 229
12.2.1 類的UML表示法 231
12.2.2 類的關聯關系 232
12.2.3 類的依賴關系 236
12.2.4 類的泛化關系 237
12.2.5 類與接口的實現關系 238
12.3 領域模型 239
12.3.1 限界上下文 240
12.3.2 上下文映射 241
12.4 領域模型與數據模型 243
12.4.1 錯把領域模型當數據模型 244
12.4.2 錯把數據模型當領域模型 246
12.4.3 兩種模型各司其職 248
12.5 精華回顧 249
13 工具化思維 251
13.1 你我都是“工具人” 252
13.2 工具化的一般步驟 252
13.3 TestsContainer小工具 253
13.4 組合創新也是創新 258
13.5 ORM工具 261
13.6 基礎設施即代碼 267
13.7 巧用便簽貼 269
13.8 精華回顧 270
參考文獻 270
14 量化思維 271
14.1 量化的步驟 271
14.1.1 定義指標 272
14.1.2 將指標數字化 273
14.1.3 優化指標 274
14.2 研發效能度量 275
14.2.1 度量不是“指標游戲” 275
14.2.2 力求合理的度量 276
14.3 目標管理 278
14.3.1 SMART原則 278
14.3.2 OKR考核指標 279
14.3.3 不要迷信指標 280
14.4 量化網站運營 281
14.5 量化技術貢獻 282
14.6 精華回顧 284
15 數據思維 285
15.1 “精通”數據 285
15.2 數據體系概覽 286
15.2.1 數據源 286
15.2.2 數據倉庫 287
15.2.3 ETL 289
15.2.4 元數據 291
15.2.5 數據應用 292
15.3 數倉建模 292
15.3.1 維度模型 293
15.3.2 事實明細表 295
15.3.3 事實匯總表 297
15.4 數據產品平臺 299
15.4.1 看我情 300
15.4.2 看行情 301
15.4.3 看敵情 301
15.5 用數據說話 302
15.6 精華回顧 303
16 產品思維 304
16.1 產品的三要素 305
16.1.1 用戶 305
16.1.2 需求 305
16.1.3 場景 306
16.2 產品的分類 306
16.2.1 用戶關系角度 307
16.2.2 用戶需求角度 307
16.2.3 用戶類型角度 307
16.2.4 產品形態角度 308
16.3 產品架構 308
16.4 產品化 310
16.5 平臺化 312
16.5.1 企業平臺化 312
16.5.2 平臺化建設 314
16.5.3 平臺產品化 316
16.6 精華回顧 318
第三部分 思維能力的綜合應用
17 我的商品團隊之旅 322
17.1 落地新團隊 323
17.1.1 熟悉人 324
17.1.2 熟悉業務 325
17.1.3 熟悉技術 328
17.1.4 熟悉文化 328
17.2 深入商品領域 329
17.2.1 領域概念 330
17.2.2 概念模型 336
17.2.3 產品架構 338
17.3 商品上架重構 340
17.3.1 復雜的商品上架流程 340
17.3.2 無用的流程引擎 341
17.3.3 問題的本質在于結構 342
17.3.4 結構化分解后的問題 345
17.4 復雜業務應對之道 348
17.4.1 上下結合 348
17.4.2 能力下沉 349
17.5 精華回顧 352
參考文獻 352
18 COLA的演進過程 353
18.1 COLA 1.0 354
18.1.1 復雜度來自哪里 354
18.1.2 COLA 1.0的設計 356
18.1.3 COLA 1.0的整體架構 365
18.2 COLA 2.0 366
18.2.1 新架構分層 366
18.2.2 新組件劃分 367
18.2.3 新擴展點設計 369
18.2.4 新二方庫定位 371
18.3 COLA 3.0 375
18.3.1 去掉Command 375
18.3.2 去掉Interceptor 377
18.3.3 去掉Validator等 377
18.3.4 優化類掃描 378
18.3.5 用Adatper代替Controller 378
18.4 COLA 4.0 379
18.4.1 架構的頂層設計 379
18.4.2 技術維度與領域維度的劃分 381
18.4.3 COLA組件 383
18.4.4 COLA 4.0的改動點 383
18.5 如何使用COLA 386
18.6 精華回顧 388
后記 389
程序員的底層思維 節選
在阿里巴巴的晉升會議上,評委經常會問:“你的成功可以復制嗎?”我*初做評委時基本不會問這樣的問題,因為我認為這樣的問題很虛,工作完成就行了,不需要那么多道理。 然而隨著時間的推移,我發現這的確是一個好問題。因為它可以區分出你是碰巧把事情做對了,還是你具備了一直做對事情的能力,二者是有本質區別的。碰巧做對,說明你的能力可能還不足,換一種情景,你就不一定能應付。因此,好的晉升制度不僅要考查成績,更重要的是考查能力。對從事腦力勞動的技術人員來說,“能力”主要指的是“思維能力”。 正所謂“有道無術,術尚可求也,有術無道,止于術”。如果說我的**本書《代碼精進之路:從碼農到工匠》主要是關于編程技藝——“術”層面的,那么本書則主要是關于技藝背后的底層思維——“道”層面的。 說到“道”,大家可能會想到“道可道,非常道”,覺得它“玄之又玄”。然而我這里所說的“道”更側重于“道理”,即我們做事背后的道理、思維方式是什么。思維能力是比解決具體問題更重要的能力。問題也許各有不同,但思維方式可以復制和遷移。我們一旦掌握了正確的思維方式,便可以舉一反三、觸類旁通。 例如,我們都知道編程的時候命名很重要,也很難,可為什么會這樣呢?如果要深挖其背后的原因,將是一個非常有趣的話題,甚至可以和哲學有關。命名工作中暗含了抽象思維能力和語言哲學,語言本身是抽象的符號,比如當你說“花”的時候,指的并不是某一朵具體的玫瑰花、郁金香,而是花的抽象概念。一朵具體的花雖然看得見、摸得著,但總會有凋零消亡的時候,而“花”這個字作為精神實體將永不會消亡。所以,抽象的花和具體的花到底哪個才是本真呢?這是一個哲學問題。 拋開哲學爭論,就“花”這個字而言,它是提取了所有花的共性的抽象符號。命名之所以難,是因為你要經歷一個提取共性、歸納要義,并賦予恰當名稱的抽象思維過程。因此,要想真正做好命名,除了要掌握一些命名技法,還需要更深層次的修煉——提升抽象思維能力。 又如,有些人說話重點突出、易于理解,而有些人則前言不搭后語,讓人不知所云;有些人寫文章、寫郵件思路清晰、有條理,而有些人的文章則詞不達意、東拼西湊;有些人寫的代碼結構清晰、可讀性強,而有些人寫的代碼則是一團亂麻、難以維護……問題的本質在于邏輯思維和結構化思維的差異,可邏輯思維和結構化思維又是什么呢?這些思維能力是可以習得和提高的嗎? 維特根斯坦在《邏輯哲學論》中說,思維本身就能解決問題,我們所要做的,就是觀察它是如何做到的。 認知水平有4個層次,從低到高依次是“不知道自己不知道、知道自己不知道、知道自己知道、不知道自己知道”。“不知道”并不糟糕,*糟糕的是“不知道自己不知道”,而因為缺少對自身思維的觀察和培養,所以很多人對思維的認知尚處于“不知道自己不知道”的層次。 這種無意識會導致我們很多時候盲目地做事。雖然一些人“996”工作很辛苦,但也許大部分工作內容是無意義的重復,在工作過程中,思維能力并沒有得到鍛煉和提高。這樣的人即使僥幸晉升成功,他的能力水平仍然停留在低層次。 就像混沌大學創始人李善友教授說的,沒有好的思維模型,再多的知識積累也是低水平的重復。成人學習的目的不是獲取更多的信息量,而是學習更好的思維模型。 綜上,本書的首要目的就是打破“不知道自己不知道”的思維禁錮,把軟件設計中會用到的各種思維能力顯性化地呈現出來,讓你意識到原來有這么多思維模型在軟件設計中發揮著至關重要的作用。 一個人如果永遠躺在自己的認知盲區,那么既得不到鍛煉,更無法提高。只有意識到這些思維能力的存在,我們才有可能去學習、練習和提升。 我也是從這樣的認知盲區中走過來的,自從意識到思維能力的重要性之后,便開始主動地學習各種思維方法,并努力將這些思維方法運用到軟件設計中。在探索和學習的過程中,我發現講思維能力的書有很多,講軟件設計的書也有很多,然而卻沒有一本將思維能力和軟件設計相結合的書。君子求諸己,既然沒有現成的書,那就只能靠自己一點一點去摸索。摸索的過程雖然要付出大量的時間和精力,但也充滿樂趣,這是學習、成長和認知突破的樂趣。功夫不負有心人,你現在看到的這本書便是我“上下求索”的結果。 實際上,在本書出版之前,我已經在多個場合做過不少于十次的有關“程序員的底層思維”的分享和演講,令我欣慰的是,每次分享都能得到很好的反饋。為此,我還專門在阿里巴巴內部開設了思維訓練的培訓課,課后有同學留言:“這樣的課程應該被納入新人入職的必修課”。 我想,這門課程之所以能夠引發大家的共鳴、使大家獲得啟發,是因為其中涉及的曾經困擾我的問題亦困擾著很多人。既然我有幸能從這些困惑中走出來,那么我希望這些經驗同樣可以幫助你。
程序員的底層思維 作者簡介
張建飛,阿里巴巴前高級技術專家,目前在某大廠擔任軟件教練。作者于2007年計算機工程碩士畢業后,先后在國內外知名互聯網企業擔任高級研發和技術專家,有著豐富的一線研發、應用架構和領域建模經驗。 作者提倡“工匠精神”,曾獲阿里巴巴新零售技術部2019年“極致匠心獎”,并憑借《代碼精進之路:從碼農到工匠》一書獲得2019年人民郵電出版社“IT類影響力作者”稱號。 作者開源的COLA應用架構是國內頗具影響力的DDD架構之一,在GitHub上的Star數量超過6100。同時,COLA也是阿里云的官方推薦架構,被廣泛應用于國內各大應用系統中。
- >
山海經
- >
大紅狗在馬戲團-大紅狗克里弗-助人
- >
羅曼·羅蘭讀書隨筆-精裝
- >
小考拉的故事-套裝共3冊
- >
有舍有得是人生
- >
伊索寓言-世界文學名著典藏-全譯本
- >
名家帶你讀魯迅:故事新編
- >
龍榆生:詞曲概論/大家小書