The Clean Coder notes
前言
最近常買一些奇怪的書,寫一些奇怪的筆記。
讓我們繼續看下去
The Clean Coder
中文書名:程序員的職業素養
小牢騷
作者的媽媽提及,只有傻子才在沒找到下個工作前就提辭呈。放眼望去,我工作以來一直都是這樣傻,沒為自己留後路。之後應該也是一樣吧,也希望老天繼續讓我這傻人有些傻福。
素養
- 素養,強調的不是天賦的神秘,也不是技術的高深,而是持續積湛的結晶。
- 職業素養,讓你成為專業人士。讓你的小孩可以說:爸爸,我以後要跟你一樣當軟體工程師!
- 專業,象徵著榮譽與驕傲,而且也明確意味著責任與義務。
- 非專業人士,收拾殘局的,通常是雇主;專業人士通常都是自己擦屁股。
- 軟體釋出前,一定要做好測試!你不知道你這行 code 也許帶來的是 1 億元的損失。
測試
- 開發、修補軟體功能前,「先研究不傷身體,再講求效果」,如果作不到這樣,那麼至少也應該要:
- 不要破壞既有軟體的功能
- 讓 QA 找不出任何問題
- 要求百分百程式碼測試覆蓋(提到了 TDD)
- 自動化 QA
- 不要破壞結構
- (如果你希望自己的軟體靈活可變,那就應該時常修改它)
- 不要破壞既有軟體的功能
職業道德
請靠自己;不該將自己的職業發展寄望在雇主,那是自己該做的事。
- 雇主沒有義務確保你在職場處於不敗之地
- 雇主沒有義務送你參加各種研討會或買書籍給你充電
- 如果你的雇主作到上述幾點,只能說明他們待你不薄,但這不代表是他們該做的
- 如果你的雇主沒有為你作到這些,你就自己想辦法作
- 你應該計畫每週工作 60 小時,前 40 小時給雇主,後 20 小時你應該自己看書、練習、學習自己的職業技能
- 那 20 小時,就是你的熱情、動力來源,就是你升級的時刻!
- 所謂術業有專攻,那也是投入時間去作的
瞭解你的工作領域
- 瞭解舊的思維,投入新的想法
- 堅持學習下去,不能落伍;就像你不會找不會變通的律師跟會計師
- 練習:專業人士往往勤學苦幹
- 合作:與他人一起編程、一起練習、一起設計、一起計畫;但也珍惜獨自開發的時光
- 輔導:教學相長
- 雇主要解決的問題就是你要解決的問題
- 謙遜:專業人士不會嘲諷別人,只會在自作自受時先笑自己
懂得說「不」
- 「能就是能,不能就是不能。不要說『試試看』」
- 要有團隊精神,對隊友伸出援手
- 別忘記客戶隨時都會新增功能,儘管他給你很急的 deadline;該說不,還是要說不。
- 如果你該說不時卻沒有說不,那你正在把你的 PM 推向懸崖。
承諾
- 口頭承諾自己將會去作
- 心裡認真對待說出的承諾
- 實際付出行動
- 只能作自己的承諾,不作他方的承諾
編程
- 程式碼必須可以正常運作
- 程式碼必須可以幫你解決客戶的問題
- 程式碼必須跟既有系統結合地天衣無縫
- 其他程式員必須可以讀懂你的程式碼
- 不在以下情況產出代碼:
- 熬夜
- 焦慮
- 無法專注
- 讓自己進入高效率狀態
被打擾時
- 當別人打擾你時,請別惡言相向;禮貌地問一下有什麼可以協助對方的地方
寫不出 code 時
- 離開座位、別死盯螢幕,找人聊天或中斷一會兒、讀一下自己有興趣的書,或試試 pair programming 應該有效
- 累了就要休息,懂得休息
- 很多想法會在你洗澡時冒出來
- 幫助別人,也接受別人的幫助
測試
- 一定要寫測試
- 一定要保留 QA 時間
TDD
TDD 的三項準則(希望每 30 秒測試一次 ):
- 在寫好失敗的單元測試前,不要撰寫任何代碼
- 只要有一單元測試失敗,就不要再寫測試代碼
- 產品代碼只要讓當前失敗的單元測試通過就好,不要多寫
TDD 的優勢
- 你對程式碼的確定及把握
- 缺陷的掌握度
- 給予你更動既有代碼的勇氣
- 單元測試的程式碼,就是最好的代碼範例
- 是一種好的程式設計方式
- 專業人士會使用 TDD
時常練習
- 沒什麼好說的,就是多練習
驗收測試
- 需求溝通
- 完成驗收的定義
- 自動化測試
- 驗收測試是寫給業務方的,單元測試是寫給程式員看的
- QA 應該找不到任何錯誤
- CI 系統
- 自動化測試金字塔(底 -> 頂):
- 單元測試
- 組件測試
- 集成測試
- 系統測試
- 人工探索式測試
時間管理
- 不要有太多會議,要懂得拒絕
- 站著開會,大家依序回答:
- 我昨天做了什麼
- 我今天預計作什麼
- 我遇到了什麼問題
- 如果遇到爭論,超過 5-30 分鐘,那麼就停止爭論,用「數據」來說話
- 蕃茄工作法(廿五分鐘工作,五分鐘休息,完成四段蕃茄鐘後,休息 30 分鐘)
面對壓力時
- 不要驚慌失措
- 記得溝通
- 還是要依照紀律原則做事
- 尋求幫助
有凝聚力的團隊
- 12 人(最少 3 人或最多 20 人)
- 程式員x7、測試人員x2、分析師x2、項目經理x1
結語
又囫圇吞棗讀完這本(簡體)書了,很多想法還是要自己 try 才會知道。
如果對這本書有興趣的人可以跟我索取 :)