`
realreal2000
  • 浏览: 78827 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
结对编程。

极限编程中4个个人实践中的一个,也是我们团队中坚持推广的实践之一。

我们以前采用代码检查的流程,来保证代码的质量。

推广结对编程之后,我们取消的代码检查。

半年的时间以来一直都坚持结对编程,每一次我们都再回顾回忆中,提出结对的优点,以及缺点,尽量的让大家认识到结对带来的好处,来提高大家对于结对的热情。

为什么要结对?

第一点,就是思考,一个人思考问题肯定没有两个人思考问题来的明白,看的清楚。当一个东西你理解了,并且还能清楚的表达的时候,那么思路会更清晰。
第二点,就是一个Bug再什么时候发现,花费最少,自然是设计的编码的时候。
第三点,加强交流,使得知识能够更快的再整个团队传播,使得代码全员共享。
第四点,所有的知识都有备份。


半年来,结对的推广很意外的,没有太多的抱怨,很奇怪的现象,因为在公司内部,其他很多实施敏捷团队的反馈来看,结对大多都是失败结束的。

一个人无知不可怕,最可怕的就是无知还被别人知道,结对无疑很多时候暴露了自己的无知。

问题:
结对的效率,结对之后我们发现,2个人一起工作能够完成的工作等于分开做的80%左右,

结对过程中,大家都很不愿意更换结对对象,结对之后,结对之后忘记休息,我们规定每次结对的时间应该在一个到一个半小时之间,可是有时候,一下午结对都没有休息是时有发生,我们决定强行休息、

至于结对对象的更换,我们规定每个任务结束之后更换结对的对象.

我们将坚持的推广这个实践,毕竟作为极限编程的四个实践都是互相影响的,互相促进的,少了其中一个就不完整。

最后的结果,要等到我们再完成2-3个Sprint之后,我们会出一份QA的数据,看一看,我们的敏捷带来了什么。

分享到:
评论
19 楼 donggua63966659 2010-05-31  
想问下。你们如何开展结对啊。 方式..
18 楼 lgstarzkhl 2010-05-31  
受教了,这种编程思想倒是很不错,就是不知道在实际应用的过程中问题多不多,还有时间怎么样,因为每个人思考一个问题如果遇到多个解决方案的时候而最佳解决方案又要花费花费很长时间的时候,不知道是不是需要取舍或者是有没有别的更好的方案????
17 楼 wandou 2010-05-29  
realreal2000 写道
aws 写道
结对的意义真得很大么?

一个开发组人数一般不会超过10人,1个leader 负责设计和任务分解分配,2-3个资深人员作为主力开发人员,其他的是刚毕业或者1年经验的初哥

初哥和初哥结对没有任何意义
初哥和资深结对是拖累
资深和资深结对是浪费



结对编程主要的目的是思考,一起思考,资深的人难道写的代码就不会有错误,难道就不会犯初心大意的错误?

一起思考就是保证我们的想法理解是正确的,结队编程不是一起写代码,是一起思考如何解决问题的。

结对还有一个很大的优势,就是知识能够很快的传播,也能很大的提高效率。

结对编程其实是非常合理的方式。但是前提是项目组中要有高水平懂得设计的开发人员。
初哥和资深结对,可以加快初哥变成资深的速度。
资深和资深结对,也可以交流设计思路,取长补短,消除分歧。
初哥和初哥结对,嗯,可以把这块代码写得谁也看不懂,将来作为反面教材。

结对编程是实用主义。大公司也未必喜欢xp,它们更喜欢看起来很复杂,但是实际上效率很低的流程。流程的作用,是方便推卸责任,另外满足高层的虚荣心,另外还可以扩大队伍,强化高层的权力。
小公司生存艰难,不提高效率就活不下去,所以适合使用xp。
16 楼 seele 2010-05-29  
aws 写道
结对的意义真得很大么?

一个开发组人数一般不会超过10人,1个leader 负责设计和任务分解分配,2-3个资深人员作为主力开发人员,其他的是刚毕业或者1年经验的初哥

初哥和初哥结对没有任何意义
初哥和资深结对是拖累
资深和资深结对是浪费


all      10
leader   1
old_man  3
new_man  7

这样的团队。。不适合结对

中间层次的开发人员呢?

如果开发人员对代码只是工作,那么这些都是形式,只为了把代码写出来能用

如果对代码是兴趣,能研究,那么对别人写的代码做一些审查,能够使自己的思路更清晰,或者产生新的思路
15 楼 bonny 2010-05-29  
抛出异常的爱 写道
bonny 写道

设计的时候,两个人或者多个人互相讨论(所有相关模块 相关人员都进来)

编码的时候,一个人写测试,一个人写代码,连接两个人的纽带是接口。


瀑布....

PS:楼主四个实践是指哪四个?


呵呵 别汗,结对实践起来还是蛮困难的。
首先领导不同意,觉得是浪费人力。另外部分员工也不同意,他们大量时间都要上开心网偷菜、聊天,这么干压力太大,转而支持领导说浪费自己的时间。。。。。

我们项目是甲方乙方合作,我是己方,甲方成员是从多个部门包括业务部科技部调拨过来的,有些东西实在管不住,出了问题抱怨也要看人家各个部门的主管的态度,掂量掂量风险,折中一下。

所以我们只能还以单兵为主,辅以一些结对和测试的思想慢慢实践。也算有××特色吧。

我们的结对方式还比较初步。但是已经大大降低单兵作战的bug率了。
14 楼 强强爱妍妍 2010-05-28  
期待lz的QA数据
13 楼 zanecoy 2010-05-28  
我们小组结对有好几个月了
4个人,其中一个是leader
两两结对,感觉出错率的确降低了不少,以前有很多的时间都浪费在找错误上面
12 楼 tiny051401 2010-05-28  
我们公司最近商量着要结对编程呢,有很多面子上的问题,摆正心态就好了。我们公司采取的是无责任制,还是一个比较轻松的团队。
11 楼 realreal2000 2010-05-28  
抛出异常的爱 写道
bonny 写道

设计的时候,两个人或者多个人互相讨论(所有相关模块 相关人员都进来)

编码的时候,一个人写测试,一个人写代码,连接两个人的纽带是接口。


瀑布....

PS:楼主四个实践是指哪四个?


简单设计,结对编程,重构,测试驱动开发

极限编程的4个个人实践
10 楼 抛出异常的爱 2010-05-28  
bonny 写道

设计的时候,两个人或者多个人互相讨论(所有相关模块 相关人员都进来)

编码的时候,一个人写测试,一个人写代码,连接两个人的纽带是接口。


瀑布....

PS:楼主四个实践是指哪四个?
9 楼 realreal2000 2010-05-28  
berlou 写道
楼主明显是tw的。


这个我昨天才知道TW代表啥意思。。。

我就是一个被老板,推出来,尝试敏捷开发的螃蟹。
8 楼 BruceXX 2010-05-28  
男的和女的结队把。。
7 楼 bonny 2010-05-28  

设计的时候,两个人或者多个人互相讨论(所有相关模块 相关人员都进来)

编码的时候,一个人写测试,一个人写代码,连接两个人的纽带是接口。

6 楼 berlou 2010-05-28  
楼主明显是tw的。
5 楼 realreal2000 2010-05-28  
继续说说资深和初哥。

开始的时候说了,无知不可怕,无知被别人知道最可怕,既然初哥都愿意让别人知道无知了,都如此的大无畏了,资深还有什么好害怕的呢?

难道害怕被初哥说无知?

结对编程,无论初哥也好,资深也罢,一起想问题,总是能发现一个人想问题时候,考虑不周全的地方,在结对的过程中,我相信对于初哥的成长绝对远大于一个人独自编程。

在说讨论的问题,如果你的表达无法让初哥明白,那么第一这个家伙什么都不懂,需要回去补习,第二就是你对问题的理解有问题,无法表述清楚一个问题的时候,是不是应该想想为什么,我这么说别人不明白,是谁的原因,这样你的理解是不是更加深入了呢?

结对编程的确有很多人说不愿意,再她还没有接触的时候,可是如果都不尝试一下,就说不行,无论如何都没有说服力的,所以尝试,总结,继续尝试,也许结对真的不适合,那么至少我也很清楚知道,为什么不结对了。
4 楼 抛出异常的爱 2010-05-28  
realreal2000 写道
aws 写道
结对的意义真得很大么?

一个开发组人数一般不会超过10人,1个leader 负责设计和任务分解分配,2-3个资深人员作为主力开发人员,其他的是刚毕业或者1年经验的初哥

初哥和初哥结对没有任何意义
初哥和资深结对是拖累
资深和资深结对是浪费



结对编程主要的目的是思考,一起思考,资深的人难道写的代码就不会有错误,难道就不会犯初心大意的错误?

一起思考就是保证我们的想法理解是正确的,结队编程不是一起写代码,是一起思考如何解决问题的。

结对还有一个很大的优势,就是知识能够很快的传播,也能很大的提高效率。

初哥就应该去死
打倒一万遍
再踩上一脚
让丫永生永世作初哥.
3 楼 realreal2000 2010-05-28  
aws 写道
结对的意义真得很大么?

一个开发组人数一般不会超过10人,1个leader 负责设计和任务分解分配,2-3个资深人员作为主力开发人员,其他的是刚毕业或者1年经验的初哥

初哥和初哥结对没有任何意义
初哥和资深结对是拖累
资深和资深结对是浪费



结对编程主要的目的是思考,一起思考,资深的人难道写的代码就不会有错误,难道就不会犯初心大意的错误?

一起思考就是保证我们的想法理解是正确的,结队编程不是一起写代码,是一起思考如何解决问题的。

结对还有一个很大的优势,就是知识能够很快的传播,也能很大的提高效率。
2 楼 tangzs 2010-05-28  
我还以为国内没有公司搞结对呢,

楼主在什么公司?
1 楼 aws 2010-05-28  
结对的意义真得很大么?

一个开发组人数一般不会超过10人,1个leader 负责设计和任务分解分配,2-3个资深人员作为主力开发人员,其他的是刚毕业或者1年经验的初哥

初哥和初哥结对没有任何意义
初哥和资深结对是拖累
资深和资深结对是浪费

相关推荐

    分布式结对编程技术pdf

    ### 分布式结对编程技术的关键知识点 #### 一、结对编程概述 - **定义**:结对编程是一种软件开发方法,其中两名程序员共用一个工作站来完成一个任务。通常,一名程序员(称为驾驶员)负责操作键盘和鼠标,直接...

    论文研究-结对编程开发人员之间若干关系问题的探讨 .pdf

    结对编程作为敏捷软件开发方法之一,自被提出以来就一直受到业界的广泛关注。在这一背景下,王鹏生先生的研究《结对编程开发人员之间若干关系问题的探讨》为我们深入分析了结对编程在实践中的应用及其带来的人员关系...

    结对编程——敏捷开发.pdf

    "结对编程——敏捷开发" 结对编程(Pair Programming)是敏捷开发(Agile Development)中的一种实践方法,它是指两名开发者坐在一起,共享一台电脑,共同编写代码的过程。 结对编程的优点: 1. 提高代码质量:...

    XP实践结对编程demo

    **结对编程(Pair Programming)**是极限编程(XP,Extreme Programming)中的一项核心实践,旨在提高软件开发的效率和质量。在这个过程中,两位程序员坐在同一台电脑前,共同编写代码,一人为主程序员(Driver),...

    交换编程-结对编程的延伸实践

    ### 交换编程—结对编程的延伸实践 #### 一、引言 交换编程作为一种新型的软件开发模式,是对结对编程的一种延伸和发展。本文旨在深入探讨交换编程的基本概念、实施背景及其在软件开发中的应用价值,并通过实例来...

    自组织团队与松结对编程 陈勇 2011-09-18

    ### 自组织团队与松结对编程 #### 一、自组织团队的概念与特点 自组织团队是指团队成员能够自我管理并自主决定工作流程的一种团队形式。这种团队模式强调团队内部的高度自治性和协作性,旨在通过减少层级管理和...

    结对编程与应用

    是软件工程中结对编程与应用的描述与实现方法

    2020级计算机系软件工程第二次结对编程作业.zip

    2020级计算机系软件工程第二次结对编程作业.zip 2020级计算机系软件工程第二次结对编程作业.zip 2020级计算机系软件工程第二次结对编程作业.zip 2020级计算机系软件工程第二次结对编程作业.zip 2020级计算机系软件...

    结对编程技术与策略pdf

    ### 结对编程技术与策略 #### 一、引言与背景 在当今快速发展的软件行业中,结对编程作为一种新兴的协作开发模式,正逐渐受到广泛关注。这种开发方式不仅改变了传统意义上的个体开发流程,而且也在软件工程领域内...

    在复杂的项目开发中使用结对编程

    ### 结对编程在复杂项目开发中的应用 #### 一、结对编程概述 结对编程是一种极限编程(Extreme Programming, XP)技术,它要求两位开发者共同在一个工作站上合作完成编程任务。一位开发者负责编写代码(驱动者),...

    此项目是结对编程项目,现把源代码给出,给以后的学弟学妹供给参考_HNU_Couple_Project.zip

    此项目是结对编程项目,现把源代码给出,给以后的学弟学妹供给参考_HNU_Couple_Project

    结对编程启示录

    结对编程,作为一种创新的软件开发实践,源自敏捷开发的理念,旨在提高代码质量和团队协作效率。"结对编程启示录"这本书深入浅出地探讨了这一主题,为小团队提供了宝贵的资源,帮助他们在有限的人力条件下产出高质量...

    结对编程在Java Web开发课程实践教学中的应用.pdf

    "结对编程在Java Web开发课程实践教学中的应用" 结对编程是一种敏捷软件开发方法,它在Java Web开发课程实践教学中有着重要的应用价值。本文将对结对编程在Java Web开发课程实践教学中的应用进行探讨,并对其效果...

    结对编程软件方法的研究与应用(1).pdf

    结对编程作为一种源自敏捷开发的软件开发实践,已经逐渐成为业界关注的焦点。它涉及到两名程序员共同在一台电脑上工作,一人专注编写代码,另一人则负责审查和提供即时反馈。这种实时的同行评审和合作机制被认为是...

    结对编程方法在C语言教学中的应用.pdf

    为了提升学生的学习兴趣和编程能力,结对编程这一教学方法在C语言教学中的应用得到了广泛的探讨与实践。结对编程,亦称为同伴编程,是一种强调协作的编程实践,在提高学生编程质量、团队合作能力以及交流技巧方面...

    结对编程在数据结构教学中的应用.pdf

    在数据结构的教学实践中,结对编程(Pair Programming)是一种极为有效的教学方法。结对编程是极限编程(Extreme Programming)实践中的一个环节,不仅能够帮助学生更快地掌握编程技能,还能够显著提升他们的团队...

    结对编程-魔方1

    结对编程是一种有效的软件开发方法,它鼓励两人一组共同编写代码,通过互相协作、讨论和监督来提高代码质量和团队效率。在这个场景中,学生们通过结对编程的方式解决了一项关于魔方状态表示和处理的编程任务。 首先...

    Addison Wesley - 结对编程启示录(手册)

    《结对编程启示录》是Addison Wesley出版的一本关于结对编程的实用手册,旨在帮助读者快速理解和掌握这种编程方法,以提升代码质量和开发效率。结对编程(Pair Programming)是极限编程(XP,Extreme Programming)...

    结对编程.zip

    结对编程

Global site tag (gtag.js) - Google Analytics