`
javatgo
  • 浏览: 1169586 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

结对编程的利与弊

阅读更多

本文同时也发表于:酷壳(http://www.cocre.com/?p=77

结对编程的利与弊

陈皓

http://blog.csdn.net/haoel

cccpairprogramming结对编程(Pair-Programming)可能是近年来最为流行的编程方式。所谓结对编程,也就是两个人写一个程序,其中,一个人叫Driver,另一个人叫Observer,Driver在编程代码,而Observer在旁边实时查看Driver的代码,并帮助Driver编程。并且,Driver和Observer在一起时可以相互讨论,有效地避免了闭门造车,并可以减少后期的code review时间,以及代码的学习成本。

有实验证明,平均下来,结对编程时间花销比单人编程增加10%的时间,但也会比单人编程减少15%的代码BUG。如果再算上后期代码的维护和学习成本,结对编程比单人编程更有效率,还更为节省成本。无论是对开发团队还是对于Business,结对编程都会是非常不错的Programming Practice。


下面是一些结对编程的优点:

  1. 程序员互相帮助,互相教对方,可以得到能力上的互补。
  2. 可以让编程环境有效地贯彻Design。
  3. 增强代码和产品质量,并有效的减少BUG。
  4. 降低学习成本。一边编程,一边共享知识和经验,有效地在实践中进行学习。
  5. 在编程中,相互讨论,可能更快更有效地解决问题。

当然,结队编程也会有一些不好的地方:

  1. 对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾。
  2. 有时候,程序员们会对一个问题各执己见(代码风格可能会是引发技术人员口水战的地方),争吵不休,反而产生重大内耗。
  3. 两个人在一起工作可能会出现工作精力不能集中的情况。程序员可能会交谈一些与工作无关的事情,反而分散注意力,导致效率比单人更为低下。
  4. 结对编程可能让程序员们相互学习得更快。有些时候,学习对方的长外,可能会和程序员们在起滋生不良气氛一样快。比如,合伙应付工作,敷衍项目。
  5. 面对新手,有经验的老手可能会觉得非常的烦躁。不合适的沟通会导到团队的不和谐。
  6. 新手在面对有经验的老手时会显得非常的紧张和不安,甚至出现害怕焦虑的的精神状态,从而总是出现低级错误,而老手站在他们后面不停地指责他们导致他们更加紧张,出现恶性循环。最终导致项目进展效率低下,并且团队貌合神离。
  7. 有经验的人更喜欢单兵作战,找个人来站在他背后看着他可能会让他感到非常的不爽,最终导致编程时受到情绪影响,反而出现反作用。

是否使用结对编程,需要具体问题具体分析,不可盲目。任何事手都有他的好与坏,结对编程也不例外,只有知道了好与坏,你才能更好的利用它。

最后,需要我们记住的是,人是一种非常复杂的动物,他们的缺点和内心的阴暗面可能会比你想像得还要糟糕,而这些东西是可以让一切事物失败的。所以,正如《人件》所说,人才是软件开发中最核心,也是最需要花时间去关注的事情。

(转载时请注明作者和出处。未经许可,请勿用于商业用途)

更多文章请访问我的Blog: http://blog.csdn.net/haoel

分享到:
评论

相关推荐

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

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

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

    结对编程强调的是两个人的协作,与传统方式相比,它允许通过团队合作来提升代码质量、促进问题解决速度,并降低因团队成员变动带来的风险。此外,结对编程还能提高团队成员之间的沟通和合作能力。 结对编程是极限...

    XP实践结对编程demo

    8. **反思与改进**:结对编程结束后,团队成员可以讨论过程中的优点和不足,以便在未来的工作中不断优化。 通过这样的结对编程demo,开发者可以了解如何在实际工作中应用XP原则,如频繁交流、快速反馈和紧密协作。...

    结对编程与应用

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

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

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

    结对编程技术与策略pdf

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

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

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

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

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

    结对编程启示录

    1. **概念介绍**:解释结对编程的基本理念,为何它被视为一种有效的质量保证工具,以及如何与传统的单兵作战编程模式相比,能带来更好的结果。 2. **优势分析**:详述结对编程的优势,如即时代码审查、减少缺陷、...

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

    在Java Web开发课程实践教学中,结对编程可以与项目驱动教学法相结合,提高教学的实践性和互动性。同时,结对编程也可以应用于其他软件开发课程和项目中,提高学生的学习兴趣和动手能力,提高团队合作能力和沟通能力...

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

    结对编程方法在C语言教学中的应用 结对编程方法在C语言教学中的应用是计算机专业基础必修课《C语言程序设计》的教学中引入的一种新颖的教学方法。该方法的提出是为了提高学生的编程能力和兴趣,提高教学效果。结对...

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

    在刘峰的文章“结对编程软件方法的研究与应用”中,他探讨了这种编程方式在实际工作环境中的应用和效果。文章可能分析了结对编程如何影响开发效率、团队动态以及项目的整体成功。参考文献中提及了钟扬、刘业政和马...

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

    这种做法与传统的工作方式不同,传统工作方式通常是每个程序员独立完成自己的任务,而结对编程则要求程序员之间密切合作,共同讨论问题,并肩作战。这种合作方式能够使得程序开发更加高效,因为两人可以互相监督,...

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

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

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

    4. **结对编程与敏捷开发**: 在敏捷开发中,结对编程被视为提高响应能力和适应变化的有效手段。它与敏捷原则中的“个体和互动高于流程和工具”相契合,强调面对面的交流和团队协作。 5. **挑战与解决策略**: ...

    结对编程.zip

    结对编程

    结对编程-魔方1

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

Global site tag (gtag.js) - Google Analytics