代碼整潔之道·程序員的職業(yè)素養(yǎng)讀書筆記

專業(yè)主義

笑吧,科廷亮蛔,老伙計师逸。這是上帝,或者也可以說是命運或者自然铝侵,跟我們開的一個玩笑。不過触徐,不管這家伙是誰或是什么咪鲜,他真幽默!哈哈撞鹉!

01 | 清楚你要什么

02 | 擔當責任

03 | 不行損害之事

不破壞軟件功能

不破壞結構

04 | 職業(yè)道德

了解你的領域

  • 設計模式
    • GOF書中的24種設計模式
  • 設計原則
    • SOLID原則
    • 組件設計原則
  • 方法
    • XP
    • Scrum
    • 精益
    • 看板
    • 瀑布
    • 結構化分析
    • 結構化設計
  • 實踐
    • 測試驅動開發(fā)
    • 面向對象設計
    • 結構化編程
    • 持續(xù)集成
    • 結對編程
  • 工件
    • UML圖
    • DFD圖
    • 結構圖
    • Petri網(wǎng)絡圖
    • 狀態(tài)遷移表
    • 流程圖
    • 決策表

堅持學習

.net到java疟丙,java到ruby颖侄,c到lisp

Prolog和Forth

練習

10分鐘kata練習

合作

一起編程、一起練習隆敢、一起設計发皿、一起計劃

輔導

了解業(yè)務領域

每位開發(fā)人員有義務了解自己開發(fā)的解決方案所對應的業(yè)務領域

與雇主或客戶保持一致

謙遜

說“不”

能就是能,不能就是不能拂蝎。不要說“試試看”穴墅。

01 | 對抗角色

02 | 高風險時刻

03 | 團隊精神

試試看

  • 許諾嘗試,意味著你承認之前未盡全力温自,趁人自己還有余力可施
  • 許諾嘗試玄货,意味著你承諾你會確保成功
  • 如果沒有保留,沒有新方案悼泌,不要輕易許諾嘗試松捉,否則你在說謊

消極對抗

  • 災難降臨,證明自己某市某刻給領導的建議馆里,撇去自己的責任隘世,放任領導走向懸崖,是一種消極對抗

04 | 說“是”的成本

05 | 如何寫出好代碼

說“是”

01 | 承諾用語

  1. 口頭上說自己將會去做
  2. 心理認真對待做出的承諾
  3. 真正付諸行動

“天哪鸠踪,我真該減減肥了丙者?”但你知道其實他還會是老樣子,什么改變都不會發(fā)生营密。

識別缺乏承諾的征兆

透露“缺乏承諾”的用語:

  • 需要械媒、應當
  • 希望、但愿
  • 讓我們
  • 我要

真正的承諾聽起來是怎樣的

我將在...之前...

  1. 只能承諾自己能完全掌控的事
  2. 如果最終目標依賴他人评汰,那就應該采取些行動纷捞,接近最終目標
  3. 沒預料到的情況,一定要及時說明被去,越快越好

02 | 學習如何說“是”

“試試”的另一面

別說“試試”主儡,真實反應自己的情況

編碼

“信心”與“出錯感知”

01 | 做好準備

  1. 代碼必須能夠正常工作
  2. 代碼能夠幫你解決客戶提出的問題
  3. 代碼必須要能和現(xiàn)有系統(tǒng)結合的天衣無縫
  4. 其他程序員必須能讀懂你的代碼

如果感到疲勞或者心煩意亂,千萬不要編碼

凌晨3點寫出的代碼

疲勞的時候惨缆,千萬不要寫代碼

焦慮時寫下的代碼

  • 私人時間解決私人問題
  • 先安靜糜值,再工作

02 | 流態(tài)區(qū)

高效率狀態(tài):流態(tài)

避免進入流態(tài)區(qū)

音樂

中斷

禮貌的表現(xiàn)出樂于助人的態(tài)度才是專業(yè)的態(tài)度

03 | 阻塞

  • 找一個搭檔結對編程,和別人一起工作時踪央,會發(fā)生一種生理上的變化臀玄?
  • 結對的主要好處就是能夠重新激活思維

04 | 調(diào)試

05 | 保持節(jié)奏

保存好自己的精力和創(chuàng)造力

知道何時應該離開一會兒

開車回家路上

洗澡

回家瓢阴,吃頓好的畅蹂,上床睡覺,清晨洗個澡2333

06 | 進度延遲

做好3個評估:

  • 樂觀預估
  • 標稱預估
  • 悲觀預估

期望

不要讓其他人對預估抱有希望

盲目沖刺

堅持維護你的估算

加班加點

沒有后備語言荣恐,不要同意接受加班方案

交付失誤

07 | 幫助

幫助他人

接受他人的幫助

輔導

測試驅動開發(fā)

TDD:測試驅動開發(fā)

XP:極限編程

對任何新鮮事物液斜,最好不要馬上批駁

01 | 此事已有定論

TDD絕不僅僅是一種用于縮短編碼周期的簡單技巧

  • 此事已有定論累贤!
  • 爭論已經(jīng)結束
  • GOTO是有害的
  • TDD確實可行

02 | TDD的三項法則

  • 編好失敗單元測試之前,不要編寫任何代碼
  • 只要有一個單元測試失敗了少漆,就不要再寫測試代碼臼膏;無法通過編譯也是一種失敗情況
  • 產(chǎn)品代碼恰好能夠讓當前失敗的單元測試成功通過即可,不要多寫

測試代碼之匹配于產(chǎn)品代碼示损,就如抗體之匹配于抗原一樣

03 | TDD的優(yōu)勢

確定性

缺陷注入率

勇氣

專業(yè)程序員怎么會容忍代碼持續(xù)劣化呢渗磅?

文檔

設計

專業(yè)人士的選擇

  • 提升代碼確定性
  • 給程序員鼓勵
  • 降低代碼缺陷率
  • 優(yōu)化文檔和設計的原則

04 | TDD的局限

練習

01 | 引子

10的22次方

我們有了更好的工具,更好的語言检访∈加悖可是,語句的本質并沒有隨時間而改變脆贵。我們真正打交道的東西医清,40多年來沒有多少改變

轉變

02 | 編程柔道場

卡塔

武術里,卡塔是一套設計好的卖氨、用來模擬搏斗一方的招式会烙。目標則是要逐步把整套招式練習到純熟。習武者努力訓練自己的身體來熟悉每一招筒捺,把它們連貫成流暢的套路柏腻。

收錄編程卡塔的網(wǎng)站:

瓦薩

瓦薩是兩個人的卡塔

自由練習

03 | 自身經(jīng)驗的拓展

開源

為開源項目貢獻代碼

java給rails做點貢獻,c++給python做點貢獻

關于練習的職業(yè)道德

04 | 結論

練習的時候你是賺不到錢的焙矛,但是練習之后葫盼,你會獲得回報,而且是豐厚的回報

驗收測試

01 | 需求的溝通

客戶對功能的設想村斟,經(jīng)不起電腦前真刀真槍的考驗

過早精細化

  1. 不確定原則
  • 每次你向業(yè)務方向展示一項功能贫导,它們就獲得了比之前更多的信息,這些新信息反過來又會影響他們對整個系統(tǒng)的看法
  1. 預估焦慮
  • 需求是一定會變化的蟆盹,所以追求那種精確性是徒勞的

02 | 遲來的模糊性

02 | 驗收測試

驗收測試的目的在于確定需求已經(jīng)完成

“完成”的定義

溝通

自動化

自動化驗收測試工具:

  • FitNesse
  • Cucumber
  • cuke4duke
  • robot framework
  • Selenium

額外工作

驗收測試什么時候寫孩灯,由誰來寫

開發(fā)人員的角色

測試的協(xié)商與被動推進

驗收測試和單元測試

真正的價值不在測試上,而是在具體指標上

圖形界面及其他復雜因素

GUI與業(yè)務邏輯解耦

持續(xù)集成

03 | 結論

解決開發(fā)方與業(yè)務方溝通的問題逾滥,唯一有效的辦法是編寫自動化測試

測試策略

01 | 目前:QA找不到任何錯誤

QA也是團隊的一部分

需求規(guī)約定義者

QA編寫針對極端情況峰档、邊界狀態(tài)和異常路徑的測試

特性描述者

02 | 自動化測試金字塔

  1. 單元測試
  • 由程序員實現(xiàn),在最低層次上定義系統(tǒng)寨昙,確保程序員代碼意圖沒有被破壞
  1. 組件測試
  • 針對系統(tǒng)各個組件進行車市讥巡,對其中的業(yè)務規(guī)則進行驗收測試,由QA和開發(fā)人員編寫舔哪,開發(fā)人員進行輔助欢顷,主要測試成功路徑的情況及部分明顯的極端情況、邊界狀態(tài)和可選路徑
  1. 集成測試
  • 測試組件之間是否能正常通信捉蚤,主要測試組件之間是否正常連接抬驴,可以進行性能測試和吞吐率測試炼七,一般由系統(tǒng)架構師或者主設計師來實現(xiàn)
  1. 系統(tǒng)測試
  • 測試系統(tǒng)是否正確組裝完畢,系統(tǒng)各個部件之間是否能夠正確交互布持,應包含吞吐率測試和性能測試豌拙,由系統(tǒng)架構師和技術負責人編寫
  1. 人工探索式測試
  • 驗證預期行為時,探索系統(tǒng)預期之外的行為

03 | 結論

時間管理

01 | 會議

  1. 會議是必需的
  2. 會議浪費了大量的時間

拒絕

受到邀請的會議沒必要全部參加题暖,為時間負責的只有自己

領導最重要的職責之一按傅,就是幫你從某些會議中脫身,因為他和你一樣關心你的時間

離席

如果會議讓人厭煩胧卤,就離席逞敷,如果會議是在浪費你的時間,就應當想一個禮貌的方式退出來

確定議程和目標

立會

  1. 我昨天干了什么
  2. 我今天打算干什么
  3. 我遇到了什么問題

每個問題時間有限灌侣,發(fā)言時間有限

迭代會議計劃

迭代回顧和Demo展示

爭論與反對

唯一出路推捐,用數(shù)據(jù)(事實)說話

02 | 注意力點數(shù)

睡眠

咖啡因

  • 早上一杯濃咖啡
  • 中午一罐無糖可樂

恢復

肌肉注意力

提升肌肉注意力,繼而提升心智注意力

輸入與輸出

03 | 時間拆分與番茄工作法

04 | 要避免的行為

優(yōu)先級錯亂:提高某個任務的優(yōu)先級侧啼,之后就有借口推遲真正的急迫任務牛柒。

05 | 死胡同

坑法則:如果你掉進了坑里,別挖痊乾。

06 | 泥潭

07 | 結論

最糟糕的事情皮壁,莫過于看到一群同志徒勞拼命的工作,結果卻陷入越來越深的泥潭

預估

01 | 什么是預估

承諾

如果你被要求承諾做自己不確定的事情哪审,那么就應當堅決拒絕

預估

墨菲定律說蛾魄,如果可能出錯,那么一定會出錯

PERT

  • 樂觀預估
  • 標稱預估
  • 悲觀預估

02 | 預估任務

  1. 亮手指
  2. 規(guī)劃撲克
  3. 關聯(lián)預估
  4. 三元預估

04 | 大數(shù)定律

把大任務分成許多小任務湿滓,分開預估在總和

壓力

高質量而不是愚蠢的勞作來享受自己的職業(yè)生涯

01 | 避免壓力

承諾

保持整潔

臟亂只會導致緩慢

危機中的紀律

當困難降臨時滴须,也不要改變行為

02 | 應對壓力

不要驚慌失措

溝通

依靠你的紀律原則

當事情十分困難時,要堅信并堅持你的原則

尋求幫助

協(xié)作

01 | 程序員與人

程序員與雇主

程序員與程序員

  1. 代碼個體所有
  2. 協(xié)作性的代碼共有權
  3. 結對

02 | 小腦

03 | 結論

編程意味著你就要和別人合作叽奥,一定要學會交流

團隊與項目

01 | 只是簡單的混合嗎

有凝聚力的團隊

  • 7名程序員
  • 2名測試人員
  • 2名分析師
  • 1名項目經(jīng)理
  1. 發(fā)酵期
  2. 團隊和項目扔水,何者為先
  • 按照項目來構建團隊,永遠不可能有凝聚力
  1. 管理有凝聚力的團隊

項目承包人的困境

02 | 結論

團隊比項目更難構建朝氓。要給予團隊充足的時間魔市,讓他們形成凝聚力,一直共同工作赵哲,成為不斷交付項目的強大引擎

輔導待德、學徒期與技藝

01 | 失敗的學位教育

在大學里完全可以蒙混過關,混的一紙文憑枫夺,其實什么都不懂

02 | 輔導

Digi-Comp I

ECP-18

非常規(guī)輔導

艱難的錘煉

03 | 學徒期

軟件學徒期

  1. 大師
  2. 熟練工
  3. 學徒或者實習生

現(xiàn)實情況

03 | 技藝

覺者覺人

首先你自己要成為能工巧匠将宪,向別人展示你的技藝

附錄

01 | 工具

版本控制工具

  • git

IDE

  • vi
  • emacs
  • intelliJ
  • TextMate

問題跟蹤

  • Pivotal Tracker
  • Lighthouse
  • wiki

持續(xù)構建

  • Jenkins

單元測試工具

  • Java:JUnit
  • .Net:NUnit
  • Clojuer:Midje
  • C/C++:CppUTest

組件測試工具

  • Fitness
  • RobotFX
  • Green Pepper
  • Cucumber
  • JBehave
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涧偷,更是在濱河造成了極大的恐慌,老刑警劉巖毙死,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燎潮,死亡現(xiàn)場離奇詭異,居然都是意外死亡扼倘,警方通過查閱死者的電腦和手機确封,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來再菊,“玉大人爪喘,你說我怎么就攤上這事【腊危” “怎么了秉剑?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長稠诲。 經(jīng)常有香客問我侦鹏,道長,這世上最難降的妖魔是什么臀叙? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任略水,我火速辦了婚禮,結果婚禮上劝萤,老公的妹妹穿的比我還像新娘渊涝。我一直安慰自己,他們只是感情好床嫌,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布跨释。 她就那樣靜靜地躺著,像睡著了一般厌处。 火紅的嫁衣襯著肌膚如雪煤傍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天嘱蛋,我揣著相機與錄音蚯姆,去河邊找鬼。 笑死洒敏,一個胖子當著我的面吹牛龄恋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凶伙,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼郭毕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了函荣?” 一聲冷哼從身側響起显押,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤扳肛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后乘碑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挖息,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年兽肤,在試婚紗的時候發(fā)現(xiàn)自己被綠了套腹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡资铡,死狀恐怖电禀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笤休,我是刑警寧澤尖飞,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站店雅,受9級特大地震影響葫松,放射性物質發(fā)生泄漏。R本人自食惡果不足惜底洗,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一腋么、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亥揖,春花似錦珊擂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挚歧,卻和暖如春扛稽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滑负。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工在张, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人矮慕。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓帮匾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親痴鳄。 傳聞我的和親對象是個殘疾皇子瘟斜,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容