`
emarket
  • 浏览: 22396 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

Pair programming的学术探讨

阅读更多

自打XP提出pair programming来,在学术界也不乏讨论。 今天就让我们来研读两篇pair programming的学术论文。

 

[1]The Costs and Benefits of Pair Programming 发表于 2000年 Proceedings of the First International Conference on Extreme Programming and Flexible Processes in Software Engineering, 出自 agile的先驱者(个人认为是鼓吹者) alistair cockburn的笔下 该文得出7点pair programming的好处是

  1. many mistakes get caught as they are being typed in rather than in QA test or in the field (continuous code reviews);
  2.  the end defect content is statistically lower (continuous code reviews);
  3.  the designs are better and code length shorter (ongoing brainstorming and pair relaying);
  4. the team solves problems faster (pair relaying);
  5. the people learn significantly more, about the system and about software development (lineof-
    sight learning);
  6. the project ends up with multiple people understanding each piece of the system;
     the people learn to work together and talk more often together, giving better information
    flow and team dynamics;
  7. people enjoy their work more.

同时对于时间的cost是 15% more 而不是预期的100% more.   但这15% 会在以后的QA和后期维护中抵销掉。

 

我比较在同1,5 ;   怀疑2,3, 4; 对6持保留态度,彻底反对7。

2,3 是要depend on 人的智商和经验的。4. 如果两个新手pair,或是一高一低,显然速度没有高手快。6,虽然正确,但是我持保留态度,一方面原因是job security,毕竟我们都是打工的,如果把developer都当作hot swapable的component,个人觉得太残酷了,一个process不能体现人性化的一面 (你随时可以走人哦,我们这回这东西的又不只你一个)的practice是不能让people enjoy的。当然信任都是相对的, 如果一个资本家认为layoff的成本是0, 你说他会怎么做。 另一方面为了lay off cost是0 去做到multiple people understanding each piece of the system本身就是一个high cost的事情。  

 

 

[2] Are Reviews an Alternative to Pair Programming 发表于 2004年的 Empirical Software Engineering 该文得出的结论是

  1. A pair of developers does not produce more reliable code than a single developer whose code was reviewed.
  2. Although pairs of developers tend to cost more than single developers equipped with reviews, the increased cost is too small to be seen in practice

我的几个挺 XP 的朋友看了该文, 觉得是胡扯,但是它们本身是没有try过 code review的。 不过这个结论似乎也算是皆大欢喜型的。 pair == solo+review。  我个人的经验就是pair有时候缺乏review, 有时候findbug, PMD这些工具对programming的帮助比pair的更大

 

 

[3]Effects of pair programming at the development team level: an experiment 发表于 2004年的 Empirical Software Engineering该文 研究了 productivity, defects, design quality, knowledge transfer and enjoyment of work 得出的结论是

 

Pair programming increased the development effort of the first tasks considerably compared to solo programming, but later the differences were small .

 

Due to this learning time the pair programming teams had worse overall project productivity .

 

Task complexity did not affect the effort differences between solo and pair programming .

 

The pair programming teams wrote code with fewer defects, but were less careful in system testing, and therefore delivered systems with more defects . They may have relied too much on the peer review taking place during programming.

 

Knowledge transfer seemed to be higher within the pair programming teams.

 

Finally, we also found weak support for higher enjoyment of work in the pair programming teams .

 

 

[4]Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise  发表于 2007 IEEE Transactions on Software Engineering 33(2):65-86 这篇文章对295个java professional做了一天的实验 最后得出的结论 do not support the hypotheses that pair programming in general reduces the time required to solve the tasks correctly or increases the proportion of correct solutions. 同时为了正确地完成task,需要有84 percent increase in effort。

 

 

学术界对pair programming也是褒贬不一的,有时候不同的论文和试验模型可以得出完全不同的结论, 所以很难从某种绝对的角度上讲pair programming优越于solo programming。  Pair or not pair, 我看还是取决于个人,团队和项目吧,把pp当作救命稻草只会误人子弟。 从根本上人性化的解决developer所需才是硬道理,google在这一点上做得很不错。

7
1
分享到:
评论
3 楼 gurudk 2008-12-03  
我也很喜欢研究,软件开发不同于以前的任何一个工种。方法论本来就不具备普遍适用性,这句话好像很傻。当你发现你达到这种批判的认识程度时,其实你已经达到了相对于方法论的顶点。这也是能达到的最高境界了。
2 楼 都别装了 2008-07-16  
我觉得这得分2方面来看
1. 如果是按照人工向客户收费的,比如咨询类公司,如果强力推荐PP,肯定是有用客户钱给自己菜鸟培训的目的
2. 如果是按照项目收费的,比如软件类公司,如果强力推荐PP,那么肯定是老板尝到了甜头。

PP是否好,得看是什么样的人在鼓吹,如果都是咨询公司老大,或者软件公司老大,那么是PP是对老板们好
如果是开发员在鼓吹,那么PP是对开发人员好
1 楼 ShiningRay 2008-07-15  
people enjoy their work more

这点我倒很同意
我以前在公司里做事,整个项目就我一个人做,那叫一个苦闷啊

相关推荐

    pair programming 摘要

    1. a quick start to know what's pair programming 2. 我们为什么需要结对编程? 3. 我们应该如何进行结对编程?

    Pair Programming What is in it for me.pdf

    ### 配对编程(Pair Programming):对我有何益处? #### 概述 配对编程是一种软件开发实践方法,其中两名程序员共同在一个工作站上协作完成相同的设计、算法或代码编写工作。这种做法在学术界已经获得了显著的...

    Pair Programming

    博文链接:https://genericbrain.iteye.com/blog/218364

    How Pair Programming Really Works

    根据Stuart Wray在2010年IEEE Software杂志上发表的文章《How Pair Programming Really Works》,我们可以深入了解这种合作模式的实际操作方法及其背后的理念。 配对编程可以定义为两位程序员坐在同一台电脑前共同...

    PairProgramming:19秋地科结对编程

    在“PairProgramming-master”这个文件名中,我们可以猜测这可能是一个项目源代码库,包含了关于结对编程的示例代码、练习或教学资源。通过研究这些内容,参与者可以更深入地理解结对编程的实际操作和益处。 总之,...

    week2d3pairprogramming

    标题“week2d3pairprogramming”可能指的是一个关于这一主题的课程或活动的第二周第三天的部分。在这个场景中,我们将深入探讨Pair Programming的概念以及与JavaScript编程相关的应用。 Pair Programming是指两个...

    ThoughtWorks-Contractor-Pair-Programming.zip

    在"ThoughtWorks-Contractor-Pair-Programming.zip"这个压缩包中,我们可以推测其内容可能与ThoughtWorks的外包工程师合作模式以及配对编程(Pair Programming)的实践相关。 配对编程是敏捷开发方法中的一个重要...

    pairProgramming

    PairProgramming-master这个文件名可能是指一个关于Pair Programming的项目或教程的源代码库,包含了实现Pair Programming实践的示例代码或相关资源。对于想要深入理解和实践Pair Programming的开发者来说,这是一...

    PairProgramming(结对编程)

    我的第一次Pair(PairProgramming的简称,即结对编程。后面都是用Pair代替)是在ThoughtWorks公司面试进行的。那次,他们来自英国的项目经理Andy面试我,和我一起进行Pair。Andy问我以前是否Pair过,我说:“没有,...

    Pair Programming Illuminated

    英文原版,中文书名:结对编程技术 结对编程技术是一个非常简单和直观的概念:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计。同一个算法、同一段代码或同一组测试、与两位程序员各自独立工作相比....

    Florist_PairProgramming

    【标题】Florist_PairProgramming 是一个与Java编程相关的项目,它可能是一个关于协同编程或配对编程的示例。在软件开发中,配对编程是一种敏捷开发方法,两个程序员在同一台计算机上共同编写代码,一个人是“驾驶员...

    js-pairprogramming

    JavaScript对对编程(Pair Programming)是一种软件开发实践,它鼓励两个开发者在同一台计算机上共同编写代码,一人作为“驾驶员”,实际操作键盘输入代码,另一人则作为“观察员”或“导航员”,负责审查代码质量、...

    PairProgramming:CS 125 结对编程

    在“PairProgramming-master”这个压缩包文件中,可能包含了该课程关于结对编程的相关材料,如示例代码、练习题目、项目指南等。通过这些资源,学生可以学习如何在实践中应用结对编程技巧,进一步掌握Java编程语言。...

    Pair_programming:练习git理解

    在IT行业中,Pair Programming是一种软件开发实践,其中两个程序员共享同一台计算机,共同编写代码。这个过程旨在提高代码质量、促进团队协作,并增强对技术问题的理解。在这个特定的场景中,"Pair_programming:练习...

    XPairtise - Pair Programming for Eclipse-开源

    在软件开发领域,结对编程(Pair Programming)是一种敏捷开发方法,它提倡两名开发人员同时在一个工作站上工作,共同编写代码,以此提高代码质量和团队协作。XPairtise 是一个专为 Eclipse 开发的开源插件,其目标...

    pair-copula.rar_pair copula程序_pair copula算法_pair-copula_paircopu

    标题"pair-copula.rar_pair copula程序_pair copula算法_pair-copula_paircopu"提及的核心元素是"Pair Copula",这是一个统计学概念,尤其在金融工程、风险管理和数据分析等领域广泛应用。"rar"通常表示这是一个压缩...

    C++学习之Pair

    C++中的Pair类型是STL(Standard Template Library,标准模板库)中的一个模板类,用于存储一对值。每个Pair对象可以存储两个数据值,这两个数据值的类型可以相同也可以不同。Pair广泛应用于需要将两个相关数据组合...

    pairprogramming:结对编程专业

    结对编程专业

Global site tag (gtag.js) - Google Analytics