態度決定一切 程式設計師的職業素養

袁野發表於2013-01-30

本文轉自:夢無憶的讀書筆記

原文地址:http://blog.jesseluo.me/blog/2012/note-about-the-clean-coder/

Robert C.Martin的大名我們就不說啥了。這本書寫的深入淺出,感覺像讀一本小說,流暢自然,但自然而然的就學到了很多東西。結合工作經驗,常有種“確實如此”的感覺。    enter image description here

該書尤其適合我等初入職場,試圖成為“專業人員”的人。其中永遠不要說“我試試”和有關測試的章節給我留下了深刻印象。

enter image description here

《程式設計師的職業素養》(英文名: The Clean Coder:A Code of Conduct for Professional Programmers)是最近讀的一本好書,作者是大名鼎鼎的Bob大叔。這本書裡系統的講述了作為一名“專業人士”所應有的態度及需要掌握的基本方法論。讀來受益匪淺,尤其適合我等初級碼農。

本書的中譯版翻譯的還不錯,讀起來比較流暢。至於準不準確,我只看過一部分原書(原書有電子版可以下載),不評判。

廢話不多說,上筆記。

上篇·態度篇


承擔責任,信守諾言 —— Say ‘Yes’

  • 承諾必須完成!
  • 瞭解自己,準確預估
  • 保證各方正確理解承諾

學會拒絕 —— Say ‘No’

  • 專業 = 不屈從權威
  • 永遠不要說“試試看/我儘量”
  • 尋求對抗中達到理想狀況,而不是虛偽地保持和諧

始終保持整潔、自律

  • 保持專案質量,避免壓力的之道 P132
  • 不行損害之事(Do No Harm) P4
  • 不管壓力多大,也要遵守一貫的程式設計紀律(TDD、重構) P132
  • 隨時改進(所以TDD)

溝通與合作

  • 與QA
  • 與BOSS
  • 與客戶
  • 與團隊/其他程式設計師
  • 保持謙遜,互幫互助

團隊協作

  • 不要為專案組建團隊,而要為團隊分配專案 P144

堅持學習,不斷練習

  • 技術基礎 P10
  • 保持“手熟”
  • 理解業務 P13
  • 僱主沒有義務提升員工能力!(但是有遠見的公司會) P82

下篇·方法論篇


編碼

  • 結對程式設計
    1. 應對壓力/阻塞/中斷等等問題
    2. 提高效率,同時review
    3. 分享知識
  • 避免進入“超神”狀態(Flow Zone)(速度 != 質量) P53
  • 保持精力,保持節奏(否則會寫出令自己後悔萬分的東西) P50 P60
  • 交付壓力
    1. 管理他人期望
    2. 避免盲目衝刺/加班
    3. 定義“完成”,保證交付

TDD

  • 每個專業人員必須掌握!
  • 三項法則 P69
  • 總結:進度細分,目標牽引編寫
  • 好處
    1. 極大減少除錯時間
    2. 缺陷率顯著下降
    3. 確定性:方便隨時重構,亦可隨時交付
    4. 促使優化設計
    5. 心理上的鼓勵

測試

  • 溝通需求 P84 P91
  • “完成” P89
    1.完成所有程式碼
    2.通過所有測試
    3.QA和需求方認可
  • 驗收測試
    1.確定需求已經完成
    2.整套自動化測試:測試通過即需求完成(自動化非常重要!)
    3.業務分析員測試正確路徑,QA測試異常、邊界、錯誤情況等
    4.研發要主動跟進,和測試協商
  • 單元測試和驗收測試不同點 P96
    1.關注點和關注人員不同
    2.測試機制與路徑不同
  • 單元測試和驗收測試共同點
    1.首先是文件,如實描述系統的設計、結構、行為
    2.測試是附屬,價值在於具體指標
  • 持續整合:非常重要!一旦失敗團隊必須全力處理,讓CI持續進行為團隊最高優先順序任務
  • QA是團隊一部分(不是研發的敵人!),並且應該找不出任何錯誤!
  • 自動化測試金字塔 P101
    1.單元測試:覆蓋率100%,程式設計師自己編寫,自己測試。用於TDD
    2.元件測試:覆蓋率50%,QA和業務人員編寫,專門測試環境。主要用於測試成功路徑等
    3.整合測試:覆蓋率20%,即模組聯調,用於測試系統是否能跑的正常
    4.系統測試:覆蓋率10%,架構師和技術負責人編寫,確保系統正確構造,效能測試等
    5.人工探索式測試:覆蓋率5%,各種人,用於探索式的測試

時間管理

  • 會議管理
    拒絕非必要會議 P178
    萬一會議超時/沒意義,禮貌地離席 P108
    尋求主管和其他同事的幫助 P108
    爭論:5分鐘內擺明道理,投票解決 P111
    具體會議的建議:立會,迭代計劃會,迭代回顧和Demo展示 P109
  • 個人時間管理
    注意力點數 P112
    番茄工作法:拆分時間 P113
    正確管理優先順序 P114
    避免死衚衕與泥潭 P115

預估

  • 用合理的預估明確承諾
  • 三元預估:樂觀,標程,悲觀三套預估值
  • 自己預估:PERT —— 一種藉助概率論進行預估的方法 P123
  • 通過他人預估: 德爾菲法及其變種 —— 數手指,規劃撲克,關聯預估 P125
  • 大數定律:分開預估再加總會更準 P127

面對壓力

  • 保持紀律,甚至更加嚴格
  • 溝通,尋求幫助

不斷練習

  • 專門的練習:卡法,瓦薩等,保持手熟 P79
  • 參與開源專案
  • 補一個:Hackethon

相關文章