SlideShare a Scribd company logo
结对编程

Josh Chen
josh@fever38.com
简单介绍
Pair Programming ,是很奇妙东西,是目前
工程界最时髦的思想,但是一般工程人员
不好接受的东西。 Why ?
– pair programming 会打破一个人工作的界线
。
– 传统的软体工程讲求 人 / 时间。
- 工作方式的转换。 目前一般人的工作方式会常
常切换到不同的工作
window ( QQ , editor , email ,
browser),Pair Programming 强调 focus 在
coding 。
结对(想象画面图)
好处
• 保证质量,高质量保证开发时段涵盖了软
件开发的整个生命周期,不容易出问题
• 团队协作,高效地找出代码中的问题。
• 老带新,快速进入状况。
• 互相学习大家开发的思维,方式,增加开
发效率
• 可以不用那么多的文档。
调试期
•
•
•
•
•

对于有不同习惯的编程人员,可以在起工
作会产生麻烦,甚至矛盾。
有些工程师喜欢单兵作战。
不同的工程师会不同的解法,可能会对问
题各执己见。
有经验的老手可能觉得指导新手很麻烦。
新手在面对老手时会显得的紧张和不安,
而出现低级错误。
开发流程
•

绿色代表成本变小
红色代表三合一

Resource * 1
设计

撰写代码

Code
Review

除错

维护

交接

•

Resource * 2
设计

撰写代码
Code Review
训练

除错

维护 * 2

交接
Pair 如何简化工作
Programmers' Hardest Tasks

绿色代表简单化
Naming things 49%
Explaining what I do (or don't do) 16%
Estimating time to complete tasks 10%
Dealing with other people 8%
working with someone else's code 8%
Implementing functionality you disagree with
3%
Writing documentation 2%
Wrtiing tests 2%
Designing a solution 2%

https://plus.google.com/107296425380776996003/posts/6UskQJPKc4S
需要结对编程的地方
• 1. 东西复杂度高,需要一起讨论的设计。
• 2. 还没有形成架构。
• 3. 系统中重要的点,需要 2 人以上维护
。
• 4. 需要透过结对编程来训练团队
member 。
实践方法
•
•
•
•
•
•
•
•
•

1. Leader 在接到 project 后开始拆解 project 。
2. 分解成细部的 task ,并定义出那边需要结对编程,结对编程的目
的意义。
3. 指定参与结对编程的目标人员。
4. 针对细部的 task 开始做前期的讨论与设计(分成 Owner 跟
supporter , 通常 Supporter 为资深人员)。
5 如果讨论的结果有争论可以寻求 Team 的共同讨论。
6. 通常由 owner 开始 coding , supporter 负责支持。不过在一
定时间。 两两交换。
7. pair 一次的时间大概以 50 分钟集中火力工作,在休息 15 分钟
,反复开始。
8. Supporter 需要有可以有上网查询资料的方法。
9. 在做 pair programming 的时候尽量排除其它人的打扰,关闭
QQ ,停止接收 email ,或者回信等等事项,专注在 coding 本身。
其他事情,可以等非 pair 的时间在做。
避免
• 避免全程 Pair ,比较好的是必然说一个礼
拜三天,或者一天 X 小时。
• 区分 Owner 和 Supporter 的职责 ,每一个
task 还是需要有负责人。
• 避免为了 Pair 而 Pair 当产生适应不良的
状况,请反映给主管。
Ad

More Related Content

Viewers also liked (20)

Calendari escolar
Calendari escolarCalendari escolar
Calendari escolar
ceippere
 
Smart lighting gscholar
Smart lighting gscholarSmart lighting gscholar
Smart lighting gscholar
BELVEZE Damien
 
5 adımda ERP yazılımı seçimi
5 adımda ERP yazılımı seçimi5 adımda ERP yazılımı seçimi
5 adımda ERP yazılımı seçimi
ERPSecim
 
Mirian janeth tomala ramirez
Mirian janeth tomala ramirezMirian janeth tomala ramirez
Mirian janeth tomala ramirez
mirian tomala
 
BLIZKO Ремонт Пермь. Разбор макетов
BLIZKO Ремонт Пермь. Разбор макетовBLIZKO Ремонт Пермь. Разбор макетов
BLIZKO Ремонт Пермь. Разбор макетов
Мария Пучкова
 
Com ser un bon pilot de motocicletes
Com ser un bon pilot de motocicletesCom ser un bon pilot de motocicletes
Com ser un bon pilot de motocicletes
Err Tituu Jauu Sabee
 
Anduriña posterior portada 2012 2013
Anduriña posterior portada 2012 2013Anduriña posterior portada 2012 2013
Anduriña posterior portada 2012 2013
Fran Bouso
 
Atividade first class
Atividade first classAtividade first class
Atividade first class
verajonson
 
Kaixo neska
Kaixo neskaKaixo neska
Kaixo neska
ClaudiaSaez4
 
Toimeentulotukea Kelasta
Toimeentulotukea KelastaToimeentulotukea Kelasta
Toimeentulotukea Kelasta
Kelan tutkimus / Research at Kela
 
Ponte Levadiça e simulação de um protótip.
Ponte Levadiça e simulação de um protótip. Ponte Levadiça e simulação de um protótip.
Ponte Levadiça e simulação de um protótip.
Hebert Chaves
 
Работа участников краш-теста молодежных бизнес-идей
Работа участников краш-теста молодежных бизнес-идейРабота участников краш-теста молодежных бизнес-идей
Работа участников краш-теста молодежных бизнес-идей
assorel
 
Calendari escolar
Calendari escolarCalendari escolar
Calendari escolar
ceippere
 
Smart lighting gscholar
Smart lighting gscholarSmart lighting gscholar
Smart lighting gscholar
BELVEZE Damien
 
5 adımda ERP yazılımı seçimi
5 adımda ERP yazılımı seçimi5 adımda ERP yazılımı seçimi
5 adımda ERP yazılımı seçimi
ERPSecim
 
Mirian janeth tomala ramirez
Mirian janeth tomala ramirezMirian janeth tomala ramirez
Mirian janeth tomala ramirez
mirian tomala
 
BLIZKO Ремонт Пермь. Разбор макетов
BLIZKO Ремонт Пермь. Разбор макетовBLIZKO Ремонт Пермь. Разбор макетов
BLIZKO Ремонт Пермь. Разбор макетов
Мария Пучкова
 
Com ser un bon pilot de motocicletes
Com ser un bon pilot de motocicletesCom ser un bon pilot de motocicletes
Com ser un bon pilot de motocicletes
Err Tituu Jauu Sabee
 
Anduriña posterior portada 2012 2013
Anduriña posterior portada 2012 2013Anduriña posterior portada 2012 2013
Anduriña posterior portada 2012 2013
Fran Bouso
 
Atividade first class
Atividade first classAtividade first class
Atividade first class
verajonson
 
Ponte Levadiça e simulação de um protótip.
Ponte Levadiça e simulação de um protótip. Ponte Levadiça e simulação de um protótip.
Ponte Levadiça e simulação de um protótip.
Hebert Chaves
 
Работа участников краш-теста молодежных бизнес-идей
Работа участников краш-теста молодежных бизнес-идейРабота участников краш-теста молодежных бизнес-идей
Работа участников краш-теста молодежных бизнес-идей
assorel
 

Similar to Pair Programming (结对编程) (20)

2012/05/23 AU Talk - 讓事情發生
2012/05/23 AU Talk - 讓事情發生2012/05/23 AU Talk - 讓事情發生
2012/05/23 AU Talk - 讓事情發生
appuniverz
 
Djt22 justinliu djt.qq.com
Djt22 justinliu djt.qq.comDjt22 justinliu djt.qq.com
Djt22 justinliu djt.qq.com
drewz lin
 
Developer vs designer
Developer vs designerDeveloper vs designer
Developer vs designer
Robert Luo
 
课件开发工具整体解决方案(知行堂)【zxt123.com】
课件开发工具整体解决方案(知行堂)【zxt123.com】课件开发工具整体解决方案(知行堂)【zxt123.com】
课件开发工具整体解决方案(知行堂)【zxt123.com】
知行堂(zxt123.com)
 
Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路
AgileCommunity
 
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
奕孝 陳
 
2012,我的技术之选
2012,我的技术之选2012,我的技术之选
2012,我的技术之选
勇浩 赖
 
Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
kewuc
 
From Coders to Builders of the Intelligent World
From Coders to Builders of the Intelligent WorldFrom Coders to Builders of the Intelligent World
From Coders to Builders of the Intelligent World
Huawei Technologies
 
在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生
Rick Hwang
 
Progressive Enhancement
Progressive EnhancementProgressive Enhancement
Progressive Enhancement
lifesinger
 
2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设
Tianwei Liu
 
Processing 基礎教學
Processing 基礎教學Processing 基礎教學
Processing 基礎教學
CAVEDU Education
 
History of share
History of shareHistory of share
History of share
aido Cho
 
Frontend devops-v1.0
Frontend devops-v1.0Frontend devops-v1.0
Frontend devops-v1.0
Yan Wang
 
專案開發實務
專案開發實務專案開發實務
專案開發實務
Chen Kuan-Ming (Eric)
 
Nb的敏捷
Nb的敏捷Nb的敏捷
Nb的敏捷
oulan
 
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
TIM WANG
 
如何以自訂語言加速程式開發與增加重用性-Domain-specific language技術實際應用
如何以自訂語言加速程式開發與增加重用性-Domain-specific language技術實際應用如何以自訂語言加速程式開發與增加重用性-Domain-specific language技術實際應用
如何以自訂語言加速程式開發與增加重用性-Domain-specific language技術實際應用
Ying-Chun Cheng
 
從研發團隊管理及產品發展的角度看 DevOps
從研發團隊管理及產品發展的角度看 DevOps從研發團隊管理及產品發展的角度看 DevOps
從研發團隊管理及產品發展的角度看 DevOps
TIM WANG
 
2012/05/23 AU Talk - 讓事情發生
2012/05/23 AU Talk - 讓事情發生2012/05/23 AU Talk - 讓事情發生
2012/05/23 AU Talk - 讓事情發生
appuniverz
 
Djt22 justinliu djt.qq.com
Djt22 justinliu djt.qq.comDjt22 justinliu djt.qq.com
Djt22 justinliu djt.qq.com
drewz lin
 
Developer vs designer
Developer vs designerDeveloper vs designer
Developer vs designer
Robert Luo
 
课件开发工具整体解决方案(知行堂)【zxt123.com】
课件开发工具整体解决方案(知行堂)【zxt123.com】课件开发工具整体解决方案(知行堂)【zxt123.com】
课件开发工具整体解决方案(知行堂)【zxt123.com】
知行堂(zxt123.com)
 
Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路
AgileCommunity
 
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
奕孝 陳
 
2012,我的技术之选
2012,我的技术之选2012,我的技术之选
2012,我的技术之选
勇浩 赖
 
Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
kewuc
 
From Coders to Builders of the Intelligent World
From Coders to Builders of the Intelligent WorldFrom Coders to Builders of the Intelligent World
From Coders to Builders of the Intelligent World
Huawei Technologies
 
在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生
Rick Hwang
 
Progressive Enhancement
Progressive EnhancementProgressive Enhancement
Progressive Enhancement
lifesinger
 
2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设
Tianwei Liu
 
History of share
History of shareHistory of share
History of share
aido Cho
 
Frontend devops-v1.0
Frontend devops-v1.0Frontend devops-v1.0
Frontend devops-v1.0
Yan Wang
 
Nb的敏捷
Nb的敏捷Nb的敏捷
Nb的敏捷
oulan
 
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
TIM WANG
 
如何以自訂語言加速程式開發與增加重用性-Domain-specific language技術實際應用
如何以自訂語言加速程式開發與增加重用性-Domain-specific language技術實際應用如何以自訂語言加速程式開發與增加重用性-Domain-specific language技術實際應用
如何以自訂語言加速程式開發與增加重用性-Domain-specific language技術實際應用
Ying-Chun Cheng
 
從研發團隊管理及產品發展的角度看 DevOps
從研發團隊管理及產品發展的角度看 DevOps從研發團隊管理及產品發展的角度看 DevOps
從研發團隊管理及產品發展的角度看 DevOps
TIM WANG
 
Ad

Pair Programming (结对编程)