不妥協的河蟹之道

54
不妥協的河蟹之道 你今天 code review 了嗎?

Upload: ken-kuan

Post on 15-Jul-2015

2.332 views

Category:

Software


1 download

TRANSCRIPT

不妥協的河蟹之道你今天 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 以後