不妥協的河蟹之道

Ken Kuan
Ken KuanExtreme Programmer en Hooloop
不妥協的河蟹之道
你今天 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
1 de 54

Recomendados

那些年我不在 Scrum team 的日子 por
那些年我不在 Scrum team 的日子那些年我不在 Scrum team 的日子
那些年我不在 Scrum team 的日子Ken Kuan
7.3K vistas83 diapositivas
敏捷開發與Scrum por
敏捷開發與Scrum敏捷開發與Scrum
敏捷開發與Scrum升煌 黃
1.9K vistas27 diapositivas
Scrum用一半的時間做兩倍的事(書本筆記) por
Scrum用一半的時間做兩倍的事(書本筆記)Scrum用一半的時間做兩倍的事(書本筆記)
Scrum用一半的時間做兩倍的事(書本筆記)National Taipei University of Technology
6.4K vistas26 diapositivas
玩轉 Schematics - Modern Web 2018 por
玩轉 Schematics - Modern Web 2018玩轉 Schematics - Modern Web 2018
玩轉 Schematics - Modern Web 2018升煌 黃
861 vistas66 diapositivas
Why Scrum (敏捷式專案管理) por
Why Scrum (敏捷式專案管理)Why Scrum (敏捷式專案管理)
Why Scrum (敏捷式專案管理)Yu Wei Shang
14K vistas50 diapositivas
User story concept for agiletourkaohsiung por
User story concept for agiletourkaohsiung User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung Jen-Chieh Ko
929 vistas53 diapositivas

Más contenido relacionado

La actualidad más candente

硬幣遊戲 Agile Summit 2018 side vent por
硬幣遊戲 Agile Summit 2018 side vent硬幣遊戲 Agile Summit 2018 side vent
硬幣遊戲 Agile Summit 2018 side ventJen-Chieh Ko
317 vistas19 diapositivas
Scrum Workshop - Paper Prototyping Game - for Girls in Tech por
Scrum Workshop - Paper Prototyping Game - for Girls in TechScrum Workshop - Paper Prototyping Game - for Girls in Tech
Scrum Workshop - Paper Prototyping Game - for Girls in TechJonathan Chen
1.9K vistas102 diapositivas
Scrum深入淺出 por
Scrum深入淺出Scrum深入淺出
Scrum深入淺出Taien Wang
5.8K vistas35 diapositivas
DDD TW Conference 2020 與RD一起跳坑DDD (20201127) por
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)Sylvia Yang
1K vistas95 diapositivas
Scrum 開發流程導入經驗分享 por
Scrum 開發流程導入經驗分享Scrum 開發流程導入經驗分享
Scrum 開發流程導入經驗分享謝 宗穎
2.5K vistas48 diapositivas
Common scrum issues por
Common scrum issuesCommon scrum issues
Common scrum issuesJen-Chieh Ko
801 vistas12 diapositivas

La actualidad más candente(20)

硬幣遊戲 Agile Summit 2018 side vent por Jen-Chieh Ko
硬幣遊戲 Agile Summit 2018 side vent硬幣遊戲 Agile Summit 2018 side vent
硬幣遊戲 Agile Summit 2018 side vent
Jen-Chieh Ko317 vistas
Scrum Workshop - Paper Prototyping Game - for Girls in Tech por Jonathan Chen
Scrum Workshop - Paper Prototyping Game - for Girls in TechScrum Workshop - Paper Prototyping Game - for Girls in Tech
Scrum Workshop - Paper Prototyping Game - for Girls in Tech
Jonathan Chen1.9K vistas
Scrum深入淺出 por Taien Wang
Scrum深入淺出Scrum深入淺出
Scrum深入淺出
Taien Wang5.8K vistas
DDD TW Conference 2020 與RD一起跳坑DDD (20201127) por Sylvia Yang
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
Sylvia Yang1K vistas
Scrum 開發流程導入經驗分享 por 謝 宗穎
Scrum 開發流程導入經驗分享Scrum 開發流程導入經驗分享
Scrum 開發流程導入經驗分享
謝 宗穎2.5K vistas
Common scrum issues por Jen-Chieh Ko
Common scrum issuesCommon scrum issues
Common scrum issues
Jen-Chieh Ko801 vistas
Agile1001 Open Course #1 (公开课) Scrum角色 por Bob Jiang
Agile1001 Open Course #1 (公开课) Scrum角色Agile1001 Open Course #1 (公开课) Scrum角色
Agile1001 Open Course #1 (公开课) Scrum角色
Bob Jiang1.4K vistas
如何把看板和 Scrum 發揮到極致 por Jen-Chieh Ko
如何把看板和 Scrum 發揮到極致如何把看板和 Scrum 發揮到極致
如何把看板和 Scrum 發揮到極致
Jen-Chieh Ko1.8K vistas
Mopcon 2021 Scrum 是新的死亡行軍嗎? por Jen-Chieh Ko
Mopcon 2021   Scrum 是新的死亡行軍嗎?Mopcon 2021   Scrum 是新的死亡行軍嗎?
Mopcon 2021 Scrum 是新的死亡行軍嗎?
Jen-Chieh Ko816 vistas
Agile taichung 50個人跑scrum por Terry Wang
Agile taichung 50個人跑scrumAgile taichung 50個人跑scrum
Agile taichung 50個人跑scrum
Terry Wang1.9K vistas
從 Scrum 到 Kanban: 為什麼 Scrum 不適合 Lean Startup por Wen-Tien Chang
從 Scrum 到 Kanban: 為什麼 Scrum 不適合 Lean Startup從 Scrum 到 Kanban: 為什麼 Scrum 不適合 Lean Startup
從 Scrum 到 Kanban: 為什麼 Scrum 不適合 Lean Startup
Wen-Tien Chang24.5K vistas
20150714 succeeding with agile por Jen-Chieh Ko
20150714 succeeding with agile20150714 succeeding with agile
20150714 succeeding with agile
Jen-Chieh Ko826 vistas
如何將 Scrum 團隊轉換成 Kanban 團隊 por Jen-Chieh Ko
如何將 Scrum 團隊轉換成 Kanban 團隊如何將 Scrum 團隊轉換成 Kanban 團隊
如何將 Scrum 團隊轉換成 Kanban 團隊
Jen-Chieh Ko1.4K vistas
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊? por 棋文 鄭
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?
棋文 鄭512 vistas
Agile meetuphsinchu201508 scrumvskanban por Jen-Chieh Ko
Agile meetuphsinchu201508 scrumvskanbanAgile meetuphsinchu201508 scrumvskanban
Agile meetuphsinchu201508 scrumvskanban
Jen-Chieh Ko1.9K vistas
有效面對技術債 por Kirk Chen
有效面對技術債有效面對技術債
有效面對技術債
Kirk Chen2.8K vistas
客倌您好,有聽過scrum嗎? first time meeting scrum por Sylvia Yang
客倌您好,有聽過scrum嗎?  first time meeting scrum客倌您好,有聽過scrum嗎?  first time meeting scrum
客倌您好,有聽過scrum嗎? first time meeting scrum
Sylvia Yang151 vistas
How to set up new scrum team in company por Mike Li
How to set up new scrum team in companyHow to set up new scrum team in company
How to set up new scrum team in company
Mike Li376 vistas

Similar a 不妥協的河蟹之道

Cppunit下載、編譯、使用與困難排除 por
Cppunit下載、編譯、使用與困難排除Cppunit下載、編譯、使用與困難排除
Cppunit下載、編譯、使用與困難排除Chris Wang
1.8K vistas50 diapositivas
Angular 深入淺出測試篇:新手入門 por
Angular 深入淺出測試篇:新手入門Angular 深入淺出測試篇:新手入門
Angular 深入淺出測試篇:新手入門志龍 陳
124 vistas34 diapositivas
Beta testing with CI por
Beta testing with CIBeta testing with CI
Beta testing with CILiyao Chen
1.3K vistas40 diapositivas
Project GATE 的敏捷實踐之路 por
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路AgileCommunity
1.6K vistas36 diapositivas
Open source的devops工具箱 公開版@coscup2016 por
Open source的devops工具箱 公開版@coscup2016Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Kirk Chen
755 vistas61 diapositivas
數學系的資訊人生 por
數學系的資訊人生數學系的資訊人生
數學系的資訊人生Jintin Lin
623 vistas45 diapositivas

Similar a 不妥協的河蟹之道(20)

Cppunit下載、編譯、使用與困難排除 por Chris Wang
Cppunit下載、編譯、使用與困難排除Cppunit下載、編譯、使用與困難排除
Cppunit下載、編譯、使用與困難排除
Chris Wang1.8K vistas
Angular 深入淺出測試篇:新手入門 por 志龍 陳
Angular 深入淺出測試篇:新手入門Angular 深入淺出測試篇:新手入門
Angular 深入淺出測試篇:新手入門
志龍 陳124 vistas
Beta testing with CI por Liyao Chen
Beta testing with CIBeta testing with CI
Beta testing with CI
Liyao Chen1.3K vistas
Project GATE 的敏捷實踐之路 por AgileCommunity
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路
AgileCommunity1.6K vistas
Open source的devops工具箱 公開版@coscup2016 por Kirk Chen
Open source的devops工具箱 公開版@coscup2016Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016
Kirk Chen755 vistas
數學系的資訊人生 por Jintin Lin
數學系的資訊人生數學系的資訊人生
數學系的資訊人生
Jintin Lin623 vistas
Running a Service in Production without Losing Your Sanity por Poga Po
Running a Service in Production without Losing Your SanityRunning a Service in Production without Losing Your Sanity
Running a Service in Production without Losing Your Sanity
Poga Po1.5K vistas
Android快速发布&持续集成 por whykill
Android快速发布&持续集成Android快速发布&持续集成
Android快速发布&持续集成
whykill1.1K vistas
Angular Conf 2018 - 原來 Angular 可以這樣玩設定 por Poy Chang
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Poy Chang520 vistas
Pair Programming (结对编程) por Josh Chen
Pair Programming (结对编程)Pair Programming (结对编程)
Pair Programming (结对编程)
Josh Chen1.4K vistas
出了问题不要靠猜 por LI Daobing
出了问题不要靠猜出了问题不要靠猜
出了问题不要靠猜
LI Daobing802 vistas
Towards scrum of scrums por Pin-Ying Tu
Towards scrum of scrumsTowards scrum of scrums
Towards scrum of scrums
Pin-Ying Tu1.9K vistas
unit test & performance optimization por Sean Liu
unit test & performance optimizationunit test & performance optimization
unit test & performance optimization
Sean Liu8 vistas
持續交付高品質程式碼 公開版 por Kirk Chen
持續交付高品質程式碼 公開版持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
Kirk Chen720 vistas
The clean coder por Andy Cheng
The clean coderThe clean coder
The clean coder
Andy Cheng396 vistas
面試心得 por 澐 向
面試心得面試心得
面試心得
澐 向4.2K vistas
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎? por Miles Chou
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
Miles Chou1.8K vistas
Codeigniter 3.0 之 30 分鐘就上手 por Piece Chao
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手
Piece Chao5.5K vistas
Go 語言基礎簡介 por Bo-Yi Wu
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
Bo-Yi Wu11.4K vistas

不妥協的河蟹之道