-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

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

( 簡體 字)
作者:于君澤 等類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社程序員的三門課:技術精進、架構修煉、管理探秘 3dWoo書號: 51845
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:10/1/2019
頁數:296
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121373770
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

推薦序1

世界需要什么樣的程序員

不想當工程師的程序員不是好民工。會編程不代表會工作,工程能力包含軟硬技能,面向的是實際應用。從程序員變為工程師,得先“入門”,然后才是“上道”,從而成為“工型人才”。有人工作幾年還沒入門,只會簡單開發;有人開發技能嫻熟,卻找不到進一步成長的路徑,陷入迷茫之中;更有不少人自詡為IT精英,卻不了解行業格局、發展趨勢,很快就遇到職業發展瓶頸,蹉跎了歲月,虛度了青春。
在我看來,好的程序員應該是“工型人才”。所謂“工型”,是指從下到上的能力提升過程。具體來說,就是先要具備完成完整應用的能力,包括:線上運維,成為熟手,這是下面的一橫;在某些領域足夠深入,成為高手,這是中間的一豎;在達到更高的水平之后,兼通很多領域,比如業務、產品、項目管理、測試、運維、團隊組織,成為驅動者和領導者,這是上面的一橫。
每個人的成長都是不斷打怪升級的過程,既要掌握技術和工具,又要學習方法和理論、積累實戰經驗,更要思考和沉淀。先進技術只是工具,最終目標是解決問題。經驗豐富的工程師就像MMA(Mixed Martial Arts,綜合格斗)高手,精通綜合技巧,活學活用,不拘泥于流派。在勇猛、精進之外,踏實、靠譜更為重要。踏實,是有自己的方向,知道差距;靠譜,是能把活兒干好,值得大家信賴,大家都樂于和你合作,放心把有挑戰的任務交給你。
從程序員到工程師,讀這本書就夠了!本書非常實用,可稱作程序員入行手冊。市場上的各類“21天學會XXX”和“XXX編程寶典”書已經太多了,能夠傳承工作中實踐技巧的書依然太少。本書匯聚了多位資深技術老炮兒壓箱底的傍身秘技,兼顧軟硬技能,貫通了程序員從基礎到進階再到突破的各個階段,道出了成長的真諦,更手把手地指引我們前行。
有道是“師傅領進門,修行在個人”,徘徊在門外或者迷茫在路口的新同學,從此不必再上下求索、苦苦尋覓。一書在手,夫復何求?希望你能通過本書,提升程序員的大局觀,在成為“工型人才”的路上邁出堅實的一步,并穿越眾妙之門,通達三千世界。

微信公眾號“IT民工閑話”作者 史海峰



推薦序2

程序員的工作是將從現實或者虛擬世界中抽象出來的邏輯以代碼的形式實現,需要凝神靜氣才能完成一段有質量的代碼。但不得不承認的是,程序員這個職業在很大程度上是吃青春飯的,如何充分把握自己的青春年華做一名優秀程序員?如何為未來的職業發展打下良好基礎?這是每個程序員都應該認真思考的問題。
非常遺憾的是,程序員這個職業所需要的知識、技能和經驗,并不能完全從學校獲得,更多地來自工作實踐。本書系統且循序漸進地介紹了如何從菜鳥程序員成為高級研發人員或者架構師,以及如何積累知識和經驗成為技術管理者,對于程序員在編碼過程中需要用到的工具、模式、測試、溝通和架構知識,作者也給出了親身實戰經驗總結。
本書應該成為程序員的案頭手冊,對程序員的快速成長意義重大。讀了這本書,相當于同老一代程序員深入交談,他們也把自己的酸甜苦辣、成功與挫折、心得與秘密悄悄地告訴了你。這不僅僅建立了你的大局觀,也讓你有機會有贏在起跑線上。

易寶支付 陳斌


序1

本書的素材主要來源于我的多年公眾號積累,并邀請了李偉山、張洪亮、彭首長、劉朋這幾位專家共同完成本書的寫作,楊彪老師也在本書寫作前期貢獻了不少想法。
我一直都是一個“笨孩子”,但我不以笨為恥。小學三年級時要寫一篇關于柑橘樹的作文,那時自己肚子沒貨、下筆萬難,父親知道后教了我兩招:一是從整體到局部觀察事物;二是閱讀,看看別人是怎樣寫的。
有朋友問,寫書的時間從哪里來?其實,因為熱愛,不覺疲憊!寫作是讓自己梳理思路的一個機會。古人說,有三類人,一類人深沉厚重,一類人磊落豪情、一類人聰明才辯。聰明才辯是學不了了,磊落豪情在骨子里有幾分,愿學深沉厚重,下笨功夫。
中國的軟件業發展短短幾十年,在思想構建、方法體系乃至實踐上仍有很多需要我們努力的地方,每一年都有人在問十年前就被問過的問題,說明有些路必須走過才知道,也說明如果能在走路的過程中給后來者一點點益處,也算是一樁好事!
特別感謝自己讀高中時的班主任何老師,何老師教給我了獨立思維,教我在寫作功力扎實的基礎上探索更有新意的內容。有一次作文課,何老師念了其他同學的兩篇文章,課后跟我說到,其實我寫得也不錯,但也要給其他同學機會。我感受良多,也漸漸地學會了包容。
感謝同事、朋友的幫助,愿我們共同成長!
感謝我的妻子小娜對我的支持和幫助,感謝你不斷鼓勵和支持我去做新的嘗試。我們的一對可愛的兒女也帶給我很多歡樂。所謂幸福,大抵如此!謝謝你們!

于君澤(右軍) 于成都

序2

為什么要寫書呢?這要從我的切身體會說起,剛進入職場時自己的職業規劃幾乎為零,一心想著怎樣盡快學習更多的技術和積累更多的業務經驗,但現實是每天都深陷永無止盡的業務需求開發中。因為長期埋沒于代碼世界的浩大分工體系中,我無法看清從業務到系統架構的價值鏈條,無法清晰定義自己在分工體系中的位置,處理不好自身與技術、業務的關系。
我想,要是能有人幫我規劃,我可能進步得更快。好在自己總能給自己打氣(總覺得自己很棒),經過這么多年的摸爬滾打,終于摸索出相對清晰的職業發展路徑。為了幫助和我一樣致力于在IT道路上走得更遠的人,我參與了本書的寫作。
寫書是一個重新梳理自己的知識體系的過程,也是重新梳理自己的邏輯思維的過程。寫書和寫公眾號不一樣,公眾號只是分享一個知識點,而寫書是分享一個相對完整的知識體系,需要思維邏輯更加縝密。當然,還要做好時間安排,我寫書都是先在路上梳理思路,再回家寫。
幸運的是,2018年有了兒子嘟嘟,當嘟嘟好奇地想摸電腦時,我會暫停寫書陪他,假模假樣地給他講爸爸在干什么。當然,兒子也是自己寫書的動力。
感謝右軍、劉朋、彭首長、張洪亮,很榮幸和你們一起合作,雖然素未謀面,但我從字里行間可以感受到你們對技術的熱情和真知灼見,希望我們能有更多的合作。
最后,鄭重感謝妻子小何同學為我們的家庭做出的貢獻。

李偉山 于南京

序3

我在2015年離開校園,現在還依稀記得當初剛剛入職的時候,公司里的高管和我們新入職的員工一起交流,他說:“一個程序員工作的前3年,肯定是他成長最快的3年”。我當時對這句話的理解還不夠深,但隨著自己慢慢地走過第一個3年,回首過去,發現在這3年里,自己確實經歷了一個飛速成長的過程。但是,自己也曾迷茫、困惑。所以,我特別想把自己在這3年里總結的經驗分享給其他人。
其實我很早就開始寫博客了,有很多出版社的編輯找過我,也有很多讀者問我能不能寫本書,但都被我婉拒了,因為我始終覺得自己還需要沉淀一段時間。直到2018年,在我工作滿三年,正有向其他人分享自己的工作經驗想法的時候,右軍找到我,說他想出一本關注程序員成長的書。我們一拍即合,馬上就投入到了這本書的創作當中。
在寫這篇作者感悟的時候,我簡單回顧了自己的人生,覺得自己還是挺幸運的。初中升高中時壓線升入一所省重點,高中升大學時壓線考入自己想學的專業,大學畢業時也幸運地加入自己夢寐已求的公司。我在工作的這幾年里一直積極跟進技術的發展,所幸絲毫沒有耽誤自己的成長,而且能堅持更新博客和公眾號,收獲了很多讀者和粉絲。這可能就是所謂的“越努力越幸運”吧。
特別感謝本書的發起人右軍的邀請,并感謝本書的其他幾位作者:李偉山、劉朋、彭首長,還要感謝本書的責任編輯張國霞,以及為本書的寫作做出很多貢獻的楊彪,很榮幸能和大家一起完成這樣一本書的寫作!
感謝我的博客和公眾號上一直支持我的讀者和粉絲,是你們的每一次閱讀和每一條評論給了我堅持創作的動力!
感謝我的女朋友對我的理解與支持!
感謝我的爸爸媽媽在我的成長道路上給我的包容與支持!
張洪亮 于杭州

序4

在剛收到右軍的本書寫作邀請時,其實我是拒絕的,因為當時的IT圈遍布裁員和996的消息,幾乎所有人都在認真對待自己的工作,希望以更多的輸出稀釋空氣中的那份壓抑,我也希望把更多的時間和精力留給工作。
但是,人生總是有那么多的偶然性,一位已步入中年的員工在離職之際向我傾訴了他的迷茫、焦慮和無助。他在經歷了多年的職業生涯后還是沒能找到自己的職業方向,將大量的時間消耗在了十字路口的彷徨中,也沒能讓自己高效成長。風雨之中,這位中年男人疲憊地帶著夢想蹣跚前行。他的傾訴也讓我陷入了深深的沉思中,總覺得自己應該做些什么。于是,我加入了本書的寫作團隊中,與其他作者一起,把我們在互聯網行業里走過的路、踩過的坑和做過的思考以文字的形式呈現給大家,希望對正在路上的朋友有所幫助。
特別感謝本書的幾位作者:右軍、李偉山、張洪亮、劉朋,我們齊心協力完成了本書的寫作,我在該過程中也受益頗多,在技術和認知上都得到了提升。感謝本書的責任編輯張國霞,以及為本書的寫作提供過很多幫助的朋友,特別是那些在百忙之中幫我找錯別字的小伙伴:何宇、潘晨、楊笑美、趙元舒,大家辛苦了!

彭首長 于成都


序5

在一堂培訓課上,關于領導力,一位技術管理者說:“領導力就是心存善念、勸人向善”,大家都在短暫的沉默后,被這有點“佛系”的說法逗樂了。但我認為,“心存善念、勸人向善”這八個字,不僅適用于技術領導者,還適用于程序員的成長。
例如,在下班之后,把刷微信的時間用在為GitHub上的開源項目貢獻一些整潔的代碼。也許你只是希望自己在用了這么多年開源項目之后,能夠回饋社區。但你沒有想到,在自己做技術面試時,面試官突然拋開你的簡歷,關注起你在GitHub上的技術貢獻。
又如,當團隊中的大多數人只關注項目進度,忽略了新增的代碼是否讓整個系統的架構變得愈發復雜時,你出于團隊不要被“腐爛”的代碼拖慢進度的想法,自告奮勇地用剛學的“整潔代碼”技能,小心翼翼地把系統做了一次重構。當大家都覺得你“另類”時,你卻發現自己不經意間提升了架構的技能,也進入了老板的后備架構師人才庫。
對我來說,能夠出版自己的第1本書,是因為右軍推薦我在2016年的TOP 100大會上做分享;能夠參與出版這第2本書,是因為自己不斷參與社區的活動,與其他貢獻者在不經意間碰撞出火花。
感謝技術社區的小伙伴們,以及我的同事和朋友們,和你們在一起,是我最快樂的時光!感謝本書的責任編輯張國霞,她對我們的延遲交稿表現出足夠的耐心,在多次不厭其煩地審閱和校對過程中,都展現出極高的專業性,為本書增色良多。
特別要感謝的,是我的妻子和父母,沒有你們的愛、支持和理解,這本書是不可能完成的。在所有的風景當中,你們都是最美的!

劉朋 于成都
內容簡介:

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

第1篇 技術精進
第1章 程序員技能與成長 2
1.1 如何學習新的編程語言 2
1.1.1 重點學什么 3
1.1.2 學習方法 3
1.2 代碼規范與單元測試 6
1.2.1 編碼規范 6
1.2.2 單元測試 7
1.2.3 測試驅動設計 9
1.3 使用靜態代碼分析工具 18
1.3.1 什么是靜態代碼分析 19
1.3.2 靜態代碼分析工具 19
1.4 代碼審查 24
1.4.1 什么是代碼審查 24
1.4.2 代碼審查的好處 24
1.4.3 如何做代碼審查 25
1.5 清單和模板 29
1.5.1 清單實踐 29
1.5.2 產品需求文檔模板 31
1.6 程序員的工作法則 33
1.6.1 工具化法則 33
1.6.2 自動化法則 38
1.6.3 關于文檔的問題 40
1.6.4 關于YAGNI 40
1.7 程序員的工具箱 41
1.7.1 可幫我們提升工作效率的硬件 42
1.7.2 可幫我們提升工作效率的操作系統 43
1.7.3 可幫我們提升工作效率的軟件 43
1.7.4 在線工具 50
第2章 加速成長與學會學習 56
2.1 程序員如何加速成長 56
2.1.1 積極主動 56
2.1.2 空杯心態 57
2.1.3 選擇合適的平臺 57
2.1.4 別怕犯錯 58
2.1.5 注意細節 58
2.1.6 時間管理 58
2.1.7 打破邊界 61
2.1.8 寫業務代碼中的成長機會 61
2.2 學會學習 66
2.2.1 高效學習的方法 67
2.2.2 高效學習的途徑 69
2.2.3 舒適區與小步子原則 72
2.2.4 兩個著名的學習理論 72
2.2.5 終身成長 74
第3章 業務分析與設計 75
3.1 黃金圈法則 75
3.2 UML建模工具 77
3.2.1 用例圖 78
3.2.2 類圖 79
3.2.3 對象圖 80
3.2.4 狀態圖 80
3.2.5 活動圖 81
3.2.6 序列圖 82
3.2.7 協作圖 82
3.2.8 構件圖 83
3.2.9 部署圖 84
3.3 業務分析與設計的方法 85
3.4 系統分析與設計的三個發展階段 87
3.4.1 面向數據驅動分析與設計 87
3.4.2 面向對象和服務分析與設計 88
3.4.3 面向問題域分析與設計 89
3.5 面向對象分析與設計 90
3.5.1 什么是面向對象 90
3.5.2 面向對象的特征 91
3.5.3 面向對象設計的原則 91
3.6 面向服務分析與設計 93
3.6.1 Web Service模式 93
3.6.2 ESB模式 94
3.6.3 微服務架構 95
3.7 領域驅動設計 97
3.8 領域模型實踐 102
3.8.1 什么是領域模型 102
3.8.2 領域模型的作用 102
3.8.3 如何進行領域建模 104

第2篇 架構修煉
第4章 架構思維 110
4.1 分解 110
4.1.1 分解的作用 111
4.1.2 分解的原則 111
4.1.3 分解的時機 112
4.2 集成 112
4.2.1 常見的集成方式 112
4.2.2 集成的難點 115
4.3 動靜分離 120
4.4 復用 121
4.4.1 系統復用的分類 122
4.4.2 可復用性和可維護性的關系 123
4.4.3 可維護性地復用的設計原則 123
4.5 分層 126
4.6 模式 127
4.6.1 分層模式 128
4.6.2 客戶端-服務器模式 131
4.6.3 主從設備模式 132
4.6.4 管道-過濾器模式 133
4.6.5 代理模式 133
4.6.6 P2P模式 134
4.6.7 事件總線模式 135
4.6.8 MVC模式 136
4.6.9 黑板模式 137
4.6.10 解釋器模式 138
4.7 抽象 139
4.8 結構化 139
4.8.1 結構化的原則 140
4.8.2 結構化分析工具 140
4.8.3 結構化思維的7個環節 141
4.9 迭代 141
4.10 勿做過度設計 141
第5章 架構設計 143
5.1 架構設計概要 143
5.1.1 業務架構 143
5.1.2 應用架構 145
5.1.3 技術架構 147
5.1.4 數據架構 149
5.2 架構設計的流程 151
5.3 架構設計的核心要素 153
5.3.1 性能 153
5.3.2 可用性 153
5.3.3 伸縮性 154
5.3.4 擴展性 154
5.3.5 安全性 154
5.4 高性能設計 154
5.4.1 主要的性能測試指標 155
5.4.2 性能測試方法 156
5.4.3 性能優化策略 157
5.5 高可用設計 159
5.5.1 高可用性的度量與考核 159
5.5.2 高可用的架構 160
5.5.3 高可用質量保證 164
5.5.4 系統運行監控 165
5.6 可伸縮設計 166
5.6.1 架構的伸縮性設計 166
5.6.2 應用服務的伸縮性設計 167
5.6.3 分布式緩存的伸縮性設計 169
5.6.4 數據存儲的伸縮性設計 169
5.7 可擴展性設計 169
5.7.1 通過消息降低系統的耦合性 170
5.7.2 通過分布式服務提供可復用的業務 170
5.7.3 建立開放平臺 170
5.8 架構設計的典型案例——訂單系統 171
5.8.1 訂單的基本概念 172
5.8.2 訂單流程 174
5.8.3 訂單系統設計中的挑戰和實踐 178
5.8.4 數據庫優化 182
5.8.5 小結 185
第6章 架構的保障:質量與風險 186
6.1 內建質量體系 186
6.2 從黑天鵝事件到墨菲定律 189
6.2.1 黑天鵝事件 189
6.2.2 蝴蝶效應 191
6.2.3 墨菲定律 191
6.3 軟件質量穩定性之殤 192
6.3.1 業務高速發展帶來的變化 193
6.3.2 問題域的復雜性 193
6.3.3 系統的復雜性 194
6.3.4 技術債問題 194
6.3.5 人、流程、文檔的博弈 195
6.3.6 采用不能掌控的工具和框架 196
6.3.7 質量意識 196
6.4 從康威定律和技術債看研發之痛 197
6.4.1 康威定律 197
6.4.2 通過3個案例來看研發之痛 197
6.4.3 架構方案和業務形態息息相關 204
6.5 求解質量熵 206
6.5.1 運用敏捷思想 207
6.5.2 運用系統化思想 208
6.5.3 技術債償還計劃 209
6.5.4 抓住合適的時機做架構升級 209
6.5.5 內建質量 210
6.5.6 不迷信,不唯新、不唯上,實踐是檢驗真理的標準 210
6.5.7 復雜的問題域:專項突破 210
6.5.8 領導者的意識 211
6.5.9 創新解決方案 211
6.6 踩過的坑和經驗總結 212
6.6.1 簡單的數字改動導致電商網站搜索功能失靈 212
6.6.2 應用竟然被外部系統拖垮了 212
6.6.3 HashMap與并發 213
6.7 故障復盤流程及模板 215
6.7.1 什么是故障復盤 215
6.7.2 為什么要做故障復盤 215
6.7.3 如何做故障復盤 216
6.7.4 故障復盤模板 219
6.8 監控與告警 221
6.8.1 監控的重要性 221
6.8.2 監控哪些內容 221
6.8.3 告警 224
6.8.4 監控的架構 224
6.9 應急處置 226

第3篇 管理探秘
第7章 為成為技術主管做準備 232
7.1 構建自我階段性目標 232
7.2 體驗自己的目標身份 234
7.3 勇于抓住機會 235
第8章 從自我管理轉為管理團隊 236
8.1 什么是領導力 236
8.2 如何構建領導力 237
8.2.1 維度1:提供清晰的領導力風格,并以信任感作為基石 238
8.2.2 維度2:了解業務,并帶領團隊達到高績效 240
8.2.3 維度3:發展自己和團隊成員 240
8.2.4 維度4:塑造未來 241
8.3 讓自己成為T型人才 242
8.4 高效時間管理 243
8.4.1 確定在做的事情符合自己的目標 244
8.4.2 隨時應用80/20法則 246
8.4.3 創造大塊時間 247
8.5 遇到“不服管”的員工怎么辦 249
8.5.1 每個人都是不錯的 250
8.5.2 建立親和與信任感 251
8.5.3 從績效評估到建設性反饋 255
8.6 如何處理沖突 261
8.6.1 了解產生沖突的原因 261
8.6.2 正確看待沖突 262
8.6.3 處理沖突 263
8.7 引導員工主動工作 264
8.8 如何從帶10個人到帶100個人 266
8.8.1 在管理上面對的挑戰 267
8.8.2 從管理1.0到管理2.0 269
8.9 如何對上管理 276
8.9.1 做好對上的預期管理 277
8.9.2 及時匯報 277
序: