论坛首页 综合技术论坛

[敏捷开发][结对编程(Pair Programming) ]

浏览 28229 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-09-19  
结对编程(Pair Programming)是一个编程模式(Programming pattern)。两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试例子,一起编码,一起单元测试,一起整合测试(Integration Test),一起写文档等。基本上所有的开发环节都一齐肩并肩地,平等地,互补地进行开发工作。
   
      结对编程不是一个人简单地看着另一个在做什么——在卓有成效的配对工作里,这两个合作伙伴常常工作在不同抽象层次,一个人关注的是为实现眼前目标而编写的代码的细节,而另一个人考虑的是更大的前景和下一步要做的事情,这两个人的角色频繁进行更换。这是一项高强度的、严密的,且常常令人疲劳的活动,但是能够创造出经过深思熟虑的高质量代码。

——Laurie Williams &Steve Hayes


本贴是关于敏捷开发-结对编程(Pair Programming) 的内容聚集的帖子。欢迎跟贴,提供:
    1、结对编程相关的研究资料和资源

    2、实施结对编程在国内或自己公司所遇到的阻力

    3、实践结对编程时,遇到的具体问题

    4、如何让我们的结对编程做得更好

    5、对2和3问题的解决方案


说明:描述问题时,最好能给出具体的例子,这样讨论不会太偏向于理论研究。
   发表时间:2006-09-19  
资源:
1、http://www.pairprogramming.com这是一个专门介绍和研究Pair的一个网站。
2、《Pair Programming (结对编程)》这是我发表于《程序员杂志》第九期的文章。
3、本论坛曾经对结队编程的讨论帖《主题:  对于结对编程我有疑问》
0 请登录后投票
   发表时间:2006-09-19  
moxie 写道


本贴是关于敏捷开发-结对编程(Pair Programming) 的内容聚集的帖子。欢迎跟贴,提供:
    1、结对编程相关的研究资料和资源

    2、实施结对编程在国内或自己公司所遇到的阻力

    3、实践结对编程时,遇到的具体问题

    4、如何让我们的结对编程做得更好

    5、对2和3问题的解决方案


说明:描述问题时,最好能给出具体的例子,这样讨论不会太偏向于理论研究。


非常乐意参加这样的讨论。
我从我的个人经验来提出几个看法:

1) 结队的伙伴是否需要水平相近的?
我的看法是虽然不必须需要,
但是我自己是希望能够得到水平差不多的合作伙伴,或者至少对代码有“感觉“的人。
因为我觉得这样才会成为互补的合作模式。否则,水平高的一方总归需要付出更多的努力,包括在交流,code。。。

2) 很多人存在对充分/频繁的交流存在抵触情绪。
两个人一起编码,就需要更多的交流,可能你讲一次,两次甚至更多,
合作伙伴也没有完全理解你的思路。这个时候,你是否会觉得“交流起来“
感觉比较累。很多人也是对此敷衍了事,“嗯,我懂了“ 这种话可以很轻易的
说出口,其实自己心里未必了解对方真正的意思,不了解合作伙伴的思路,
何以能够更“互补“的合作?
确实,交流需要成本。
一个design ,code,现在两个人一起,你还要付起把你的“desing ,code"给另外一个人看明白的
的义务。这个义务可以带来很多意想不到的好处。

比如,一个比较复杂的设计思路在你脑子构思了,然后你把它表达出来给合作伙伴听,
在你表达的过程中,越复杂的越难以让对方听明白的设计,越有可能存在问题。

如果不认识交流的重要性,那么pair也无从谈起。
但是,这个成本阻碍了很多人。


3) “你累了吗? 我们休息一下吧“
需要全身心地投入,design,code , communication.
如果其中的一方没有全身心投入,pair的结果将会适得其反。

pair还需要照顾两个人的情绪?

4) “自信,乐观“
你的情绪和工作状态 影响着另外一个人的情绪和工作状态。

因为有这个问题,总是会存在一些不愉快地小插曲。

0 请登录后投票
   发表时间:2006-09-19  
[quote="firebody]

3) “你累了吗? 我们休息一下吧“
需要全身心地投入,design,code , communication.
如果其中的一方没有全身心投入,pair的结果将会适得其反。

pair还需要照顾两个人的情绪?


我觉得很需要,就像“踢猫”那样,情绪会影响人的。比如结对的一方,如果一方心情不好懒得说话,对于另一方提出的问题也是不热情的态度,或者一个人因为心不在焉而去注意了其它,结对的过程其实也就另一个人工作的过程,则也是很影响效率的。
呵呵,记得刚入行时,那时根本就没有“结对编程”的感觉,总喜欢在同事们旁边看他们写程序,讨论交流,N久之后才发现原来这有一个学名:叫做极限编程。
我觉得越是富有创造力的工作,极限编程的优势越明显,像GOOGLE之类的公司,可惜普通的软件公司很少采取这样的做法的,因为头们总觉得成本过高。。。
0 请登录后投票
   发表时间:2006-09-19  
珂儿 写道
[quote="firebody]

3) “你累了吗? 我们休息一下吧“
需要全身心地投入,design,code , communication.
如果其中的一方没有全身心投入,pair的结果将会适得其反。

pair还需要照顾两个人的情绪?


我觉得很需要,就像“踢猫”那样,情绪会影响人的。比如结对的一方,如果一方心情不好懒得说话,对于另一方提出的问题也是不热情的态度,或者一个人因为心不在焉而去注意了其它,结对的过程其实也就另一个人工作的过程,则也是很影响效率的。
呵呵,记得刚入行时,那时根本就没有“结对编程”的感觉,总喜欢在同事们旁边看他们写程序,讨论交流,N久之后才发现原来这有一个学名:叫做极限编程。
我觉得越是富有创造力的工作,极限编程的优势越明显,像GOOGLE之类的公司,可惜普通的软件公司很少采取这样的做法的,因为头们总觉得成本过高。。。


顺便提一下,我很乐意和美女一起pair的。
0 请登录后投票
   发表时间:2006-09-19  
firebody 写道
顺便提一下,我很乐意和美女一起pair的。

  • 描述: The Hype and Reality
  • 大小: 224.5 KB
0 请登录后投票
   发表时间:2006-09-19  
我也想有美女跟我pair,最好一个项目组里有几个美女,换来换去都是美女。
要是每个项目组里都有一半美女,那就好了,来个组内switch,组外switch,
一年下来365天有每天都能接触到不同的美女,多美的梦想阿,到那个时候,
程序员便会成为最受女生欢迎的职业了,形成良性循环后,就不怕没有美女跟我们pair了。
0 请登录后投票
   发表时间:2006-09-19  
楼上在做梦吧。。。。。

她在背后唠叼。。。。汗
0 请登录后投票
   发表时间:2006-09-19  
哈哈,太搞笑了。
pair非常好,我也渴望和美女结队,只可惜很少有那个机会,连测试代码都不写,更不用提pair了。
,真希望有一天能和美女结队编码啊
0 请登录后投票
   发表时间:2006-09-19  
别跑题了,各位。
据说在JavaEye里,有人是通过结对编程(Pair Programming)找到老婆的,站出来给大家谈谈心得体会吧。关于和美女Pair的故事,另开贴,在海阔天空板块讨论。
小跑一下。
引用

1) 结队的伙伴是否需要水平相近的?

“水平相近”,其实这个不能只理解为技术水平。

我把在项目中遇到的developer分为四类。
1、优秀型的Developer。有丰富的工作经验,很好的解决问题能力,善于沟通,有幽默感,还有生活情调。这个不说了,他在任何地方都是受欢迎的。

2、巨大潜力的Developer。没有工作经验,理解能力不错,悟性比较高,人很勤快,爱问问题,脾气也好,懂得尊重其他同事。这类developer,我们也非常喜欢。我们遇到一个这样的应届毕业生,刚来的时候,只会一些基本的Java知识,他在团队中工作5个月,并已成为客户公司的主力developer了。

3、Trick型的Developer。也许没什么经验,但思维非常活跃,也许喜欢狡辩,也偶尔会指责别人,有点小懒惰,而且会自我感觉非常良好。与这样的develoer合作时候,问题争论会很多,但对问题的理解也会更加深刻。这样的devloper,需要教育提醒。告诉他我们是一个Team,多用“我们”这个词,你指责别人,别人也会以同样的方式对你。如果能改正这些缺点,他绝对是个好同志。

4、普通的Developer。要么是技术不错,但是理解能力很弱;要么是沟通、理解能力不错,但是工作态度不好,爱混日子。和这样的developer 一起Pair是要辛苦一些,需要一些技巧。能把你的技术方案,讲得通俗易懂,这也正说明你思考正确和深刻,我们在开发的时候,要善于分解问题,将一个复杂的问题分解,小步前进,这样开发才有一个非常好节奏。工作态度不好的,那就多问问题,逼他思考工作.

最后如果还有一类,那就是没有救的,公司不该招的
引用
2) 很多人存在对充分/频繁的交流存在抵触情绪。

如果是抵触,那只能沟通。如果在团队中能有一个敏捷教练,将会好很多。
引用

3) “你累了吗? 我们休息一下吧“
4) “自信,乐观“

3和4我也没有好办法,这和个人的天性有关。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics