不妥協的河蟹之道
你今天 code review 了嗎?
⾃自我介紹
• 阿官 - Ken Kuan
• Hooloop - Extreme Programmer
• 專注於
• iOS, Android, Scrum, CI, Testing
何謂不妥協的河蟹之道?
不妥協的軟體品質
和諧的⼯工作氣氛
軟體品質 ⼯工作氣氛
What is Code Review
• 就是程式碼審查
• 分為:
• 直接 review
• 透過⼯工具 (email, github)
• Pair Programming
低密度
⾼高密度時間⻑⾧長
時間短
直接
間接
How we review
Review!
GitFlow + GitHub
Live Demo
究竟,Code Review 如
何讓團隊不妥協⼜又和諧?
Code Review 三⼤大妙⽤用
• 改善團隊氣氛
• 強化團隊學習
• 維持軟體品質
Code Review 妙⽤用⼀一
改善團隊氣氛
情境模擬
• ⼀一早上班更新程式碼後,看到了些許錯誤,你該
怎麼辦呢?
A. 默默幫他改掉
B. ⾛走過去拍拍他肩膀
C. 裝作沒看到
A、默默幫他改掉
你 肇事者
B、⾛走過去拍拍他肩膀
• 你:經過⼀一番掙扎
開放式辦公室
肇事者⼼心理三部曲
真謝謝啊 夠了喔! 你針對我啊
C、裝作沒看到
• 肇事者 - 毫無影響
• 你 - 悶久了也會內傷
軟體品質低落
⻑⾧長此以往......
Code Review 如何解決上
述問題?
權⼒力 責任
權⼒力
• Code Review 賦予團隊成員 review code 的權
⼒力!
• 有沒有權⼒力差很多嗎?
賦予⽼老⿃鳥、菜⿃鳥同等權⼒力
Reviewer Author
讓我們回到剛剛的情境
• 程式碼都還沒進來
• 可以在系統上直接反應
A、默默幫他改掉
B、⾛走過去拍拍他肩膀
• 你、肇事者:⼀一切照規定來!
C、裝作沒看到
• Reviewer 不只是擁有 review code 的權⼒力,更有
認真 review 的責任
責任
• 賦予團隊成員 review 權⼒力的同時, reviewer 也擁
有承擔該段 code 的責任。
Code 的好壞,⼈人⼈人有責!
情境⼆二:⼯工程師最害怕
的夢魘
腥⾵風⾎血⾬雨的檢討會議
找出兇⼿手!
找出兇⼿手以後?
贏了⾯面⼦子,輸了裡⼦子
• 不犯錯 = 各⾃自為政
• 出了問題,找代罪羔⽺羊
以不犯錯為最⾼高指導原則
犧牲軟體品質!
難道,犯錯真的是肇事者
⼀一個⼈人的問題嗎?
Scrum
• 團隊!
責任分擔
• Reviewer 和 Author 同時 OWN 該段 code
• Reviewer 責任更⼤大
• 不再推卸責任
• 增加責任感
另⼀一個好處:信任
• reviewer 給予的建議,是為了產品更好
• ⾝身為 author ,也會更加信任 reviewer 的
feedback
• 培養團隊成員的信任感,達到良好的合作模式
最終⺫⽬目標:和諧
• 真正的和諧是⼀一起為了共同的⺫⽬目標⽽而努⼒力,⽽而⾮非
沈默通過⼀一個提案
• 責任、信任
• 指責 -> 解決問題
• 了解彼此個性
Code Review 妙⽤用 2
強化團隊學習
只有新⼿手需要學習?
• ⽼老⿃鳥更需要學習
軟體的開發技術與觀念與時俱進,往往不
到⼀一年就過時了!
⽼老⿃鳥學習的障礙
• 科學實驗指出:年紀⼤大學習慢不是因為⽣生理退化,
⽽而是因為被⾃自⾝身經驗、觀念束縛!
最好的學習⽅方式
• 看別⼈人寫的 code
如果沒有 code review
• 什麼時候會看別⼈人的 code ?
• 寫新功能剛好需要寫到
• Demo 出包,找戰犯修 bug 的時候
幾乎沒有!
學習最⼤大的動⼒力
強迫看 code
• 在責任感的驅使下,硬著頭⽪皮也要看懂
• 學習 > 指導
• 透過交流進⽽而理解別⼈人想法
Code Review 妙⽤用三
維持軟體品質
對 Code Review 的質疑
浪費時間?
code review 發現問題
的機率?
強化軟體品質
相當⾼高!
改善品質 = 節省時間
結論
• 改善團隊氣氛
• 強化團隊學習
• 維持軟體品質
有了 code review 以後
kenkuan@hooloop.com

不妥協的河蟹之道