结对编程的一种实践 - measures.net.cn · 实施结对编程的条件...

30
结对编程的一种实践 郑州商品交易所技术中心

Upload: others

Post on 18-Nov-2020

39 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

结对编程的一种实践

郑州商品交易所技术中心

Page 2: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 2

内容

实施结对编程的起因

结对编程的做法

实施结对编程的条件

结对编程与传统做法的优缺点分析

推广的一些经验

Page 3: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 3

实施结对编程的起因

编码 自测 工具扫描 单元测试 人工走查

Page 4: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 4

内容

实施结对编程的起因

结对编程的做法

实施结对编程的条件

结对编程与传统做法的优缺点分析

推广的一些经验

Page 5: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 5

结对编程的做法

Page 6: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 6

结对编程的做法—结对设计

程序员A 设计方案A

设计方案

设计方案B程序员B

Page 7: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 7

结对编程的做法—结对设计

程序员A 受影响的代码

修改方案

受影响的功能

程序员B

Page 8: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

8

结对编程的做法—结对设计

Page 9: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

9

结对编程的做法—结对编码

驾驶员:编码

领航员:思考

Page 10: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 10

结对编程的做法—结对编码

编码 自测 工具扫描 单元测试 人工走查

不采用TDD

Page 11: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 11

结对编程的做法—结对编码

编码 自测 工具扫描 单元测试 人工走查

采用TDD

Page 12: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 12

内容

实施结对编程的起因

结对编程的做法

实施结对编程的条件

结对编程与传统做法的优缺点分析

推广的一些经验

Page 13: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

13

实施结对编程的条件

1)实施结对编程的两个人应该对需求、设计有同样的了解。

2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

那就是强对弱的单方面指导,而不是协同工作了。

Page 14: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 14

内容

实施结对编程的起因

结对编程的做法

实施结对编程的条件

结对编程与传统做法的优缺点分析

推广的一些经验

Page 15: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

15

结对编程与传统做法的优缺点分析

结对设计 设计+评审

结对编码 编码+走查

结对编程 传统做法

Page 16: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

16

结对编程与传统做法的优缺点分析

结对设计 VS 设计+评审

程序员B(模块2)

设计 编码

程序员A(模块1)

设计 编码

Page 17: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

17

结对编程与传统做法的优缺点分析

设计什么时候需要可视化?

Page 18: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

18

结对编程与传统做法的优缺点分析

假如一个模块不能在脑子中构思了

假设作者比较有责任心

假设审查者水平比较高

假设审查者比较有责任心

假设审查者刚好有空

评审的困难

Page 19: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 19

结对编程与传统做法的优缺点分析

程序员A 设计方案A

设计方案

设计方案B程序员B

结对设计

Page 20: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 20

结对编程与传统做法的优缺点分析

结对编码 VS 编码+走查

写完部分代码

提交走查 反馈意见 修改 审核

需要了解需求、设计

+X天 +X天 +X天

如何定义“部分”?

Page 21: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 21

结对编程与传统做法的优缺点分析

结对编码

1.不存在定义“部分代码”的问题

2.即时反馈,即时修改,即时审核

风险:结对时领航员不在状态,丧失作用

Page 22: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 22

结对编程与传统做法的优缺点分析

总体上说

1.传统做法需要团队具备较强的管理能力才能做的好

2.结对编程对管理的要求没有那么高,但对人有要求

Page 23: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 23

内容

实施结对编程的起因

结对编程的做法

实施结对编程的条件

结对编程与传统做法的优缺点分析

推广的一些经验

Page 24: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 24

推广的经验—适用场景

公司高层不支持、不反对

Page 25: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 25

推广的经验—人的因素

认知到位的项目经理

水平相当的两个人

新人入手

Page 26: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 26

推广的经验—技术因素

本文所述的实践来源于一个项目的数据库小组,

现有技术对SQL代码的单元测试、静态扫描支持的很差,

他们自己迫切需要能够保证代码质量的手段。

Page 27: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 27

推广的经验—工期因素

开始实施结对编程会拖慢进度(但不会慢2倍),

在项目选择上要选工期比较宽松的项目。

Page 28: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 28

推广的经验—宣传因素

1.给项目讲清楚结对编程的优缺点及适用场景,让他心里有数。

2.实施结对编程的核心人员获得了公司“质量标兵”的称号,

在公司里进行了宣传。

Page 29: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 29

报告人

李志杰:18638655956(微信)

邮箱:[email protected]

Page 30: 结对编程的一种实践 - measures.net.cn · 实施结对编程的条件 1)实施结对编程的两个人应该对需求、设计有同样的了解。 2)结对编程适用于两个技术水平相当的人之间进行,如果一强一弱,

麦哲思科技 版权所有 30

Q&A