[技术讨论]结对编程与交换编程的对话

对话内容

2006-12-7

11:57:35

魏伟()

青润

结对编程指什么?

2006-12-7

14:17:01

青润

魏伟()

pair programming

2006-12-7

14:20:41

青润

魏伟()

一种软件开发过程的团队分工形式

2006-12-7

14:22:14

魏伟()

青润

不明白有什么好处啊

2006-12-7

14:24:26

魏伟()

青润

http://qinysong.javaeye.com/blog/24766,这个写的好么?

2006-12-7

14:24:30

青润

魏伟()

你看一下XP方面的材料会比较好一些。

2006-12-7

14:25:04

青润

魏伟()

另外,你可以看一下程序员杂志第12期上面有我写的一篇交换编程的文章,这个对你平时开发肯定有好处。

2006-12-7

14:25:19

魏伟()

青润

2006-12-7

14:25:20

青润

魏伟()

因为目前听说过我这个方法的都很感兴趣并愿意采用。

2006-12-7

14:28:52

青润

魏伟()

http://blog.csdn.net/programmer_editor/archive/ 2006/12/07 /1433092.aspx

2006-12-7

14:32:01

青润

魏伟()

是你发的这个写的内容。但是,评价上需要斟酌。

2006-12-7

14:37:45

魏伟()

青润

我感觉实际工作中,很多时候都是这么做的

2006-12-7

14:37:54

魏伟()

青润

当然,没这么全面

2006-12-7

14:38:21

青润

魏伟()

呵呵。有很多都是无意识的,转变成有意识,这是一个过程。其实,并不是什么特别的创新。

2006-12-7

14:38:37

魏伟()

青润

比如,我管理项目的时候,就热衷于参与很多模块的开发,和开发人员一起开发一些代码,然后再换一个

2006-12-7

14:39:19

魏伟()

青润

如果从理论上证实是提供效率的,倒很适合现在我们单位的实际情况,项目太多,人员临时调动很频繁

2006-12-7

14:39:28

青润

魏伟()

那和结对的方式还是有些差异,其实各个团队有自己的特点,交换和结对,要看如何应用。团队特点不同,也需要考虑具体的应对策略。

对话来源 

这段对话来自我msn的留言:国外结对编程实验人数超过百人,部分实验长达三年被实验人数千余人,国内同类实验六个人,差别,差距!

另外,交换编程的文章已经在程序员杂志第十二期上发表,csdn官方blog也已经发布了网络版本:http://blog.csdn.net/programmer_editor/archive/2006/12/07/1433092.aspx

当然,关于这个方法具体的用法一方面是要根据项目来考虑,另一方面就需要根据团队成员情况进行分析,总之,灵活运用才能让有效的方法发挥出其效果,本本主义可能反而会毁掉一个方法。

下面是我交换编程文章的最新版本中补充的部分内容,发布在这里。

交换编程最新版本补充内容

Abstract

结对编程是一个编程方法,在这种方法中要求两个程序员使用一台电脑在一起工作完成同一个任务。在软件开发中关于结对编程的价值正在进行着争论。Pair programming is a programming technique in which two programmers use one computer to work together on the same task. There is an ongoing debate over the value of pair programming in software development. 目前在这个领域大量的知识都是离散的和无条理的。回顾这些可以看到绝大多数这方面的实验研究都是在大学环境中进行的。几乎没有在真实软件开发项目中详细审查下的结对编程被已存在的系统化实验研究过。因此,假设目前仍然没有纯粹的经验验证这种优势的存在。The current body of knowledge in this area is scattered and unorganized. Review shows that most of the results have been obtained from experimental studies in university settings. Few, if any, empirical studies exist, where pair programming has been systematically under scrutiny in real software development projects. Thus, its proposed benefits remain currently without solid empirical evidence.

由于结对编程在表象上给人以浪费一个开发人员的感觉,所以,在很多软件企业中,结对编程很难得到推广实施。在本文的报告中,给出了一种有别于结对编程和传统的单人编程的团队组织形式,这种形式融合了结对编程促进团队内相互交流的好处,保持了团队的稳定性,同时采用了传统单人编程的形式,不给人以浪费人力的感觉。

1.           Introduction

在传统的开发过程中,往往是一个人从一个模块的需求开始,然后作分析、设计、编码、单元测试,接着才会交给第二个人(专职测试人员)进行其他测试项目。这样的开发过程会因为开发人员的变动而对项目的进展产生较大的影响,所以就有人提出项目中编码人员的重要性远比项目经理大。而同时,极限编程中的结对编程方式,对于开发人员人手严重不足的项目中,很多软件企业是不认可这种组织方式的,他们认为这会浪费很多的人力,一加一未必大于二。

Pair Programming is one technique of 12 Core Practices in Extreme Programming [1, 2, 3] . With Pair Programming, all tasks must be performed by pairs of programmers using only one display, keyboard, and mouse. Proponents of Pair Programming claim that their development paradigm brings strong advantages over conventional processes, including higher team productivity and improved software quality. XP的宣传中提到,两个人结对在一段时间以后可以使得开发效率超过solo programming,同时质量也会得到提高[6]。同样,在2006年的敏捷中国开发者大会上,ThoughtWorks的总经理也提到了这个问题,他的解释是这样的:当两个人合作三个月以后,效率会超过两个人单独编程的效率!但请注意这里有一个时间前提:三个月以后。三个月这个时间未必是真实确凿的时间分界线,它只是一个模糊的大概的时间范畴,如果两个人配合的好,也许只需要两个多月,如果配合不好,也许需要四五个月的时间,或者更长的时间……。本文相信这样的说法连Martin也不会反对的。

但是,在本文的实践过程中发现,几乎没有软件企业因为XP这样的宣传而采用Pair Programming的方式进行软件开发。除了Thought Works等少数公司外,几乎所有的公司都仍然采用传统的solo programming的方式进行软件开发。

在所能查阅到的关于Pair Programming优势分析和数据采集的文献资料中,其研究的基础大部分都是在校学生[7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]。只有不到十分之一的论文是关于专业程序员进行结队编程的实验[6, 33],而这部分关于专业程序员实践Pair Programming的论文也并没有讨论Pair Programming开发效率是否真的能够达到两个同等水平的专业程序员solo programming的开发效率。几乎所有的论文的对比数据基础都是基于Pair Programming和一个solo programming之间进行的,这样的数据无疑并不能让软件企业信服这种开发方法所具有的优势。同时还查阅到一些论文在实践的基础上提出了相反的观点,如Hanna Hulkko & Pekka Abrahamsson的研究就认为Pair Programming在与solo programming对比的时候并不能始终保持高效率和高质量。他们在文中写道:”They indicate that pair programming may not necessarily provide as extensive quality benefits as suggested in literature, and on the other hand, does not result in consistently superior productivity when compared to solo programming” [32, 33].

基于这样的实践和研究,本文更认为,交换编程具有其特殊的优势,在与Pair Programmingsolo programming的对比上。

References

[1]   K. Beck. Embracing change with extreme programming. IEEE Computer, pages 70–77, Oct. 1999.

[2]   K. Beck, Extreme Programming Explained: Embrace Change. Reading , Massachusetts : Addison-Wesley, 2000.

[3]   Williams, L. & Kessler, R. (2002), Pair Programming Illuminated, Pearson.

[4]   Constantine , L.L., Constantine on Peopleware. Yourdon Press Computing Series, ed. E. Yourdon . 1995, Englewood Cliffs, NJ: Yourdon Press.

[5]   F. Brooks. The Mythical Man Month. Addison-Wesley, anniversary edition, 1995.

[6]   Cockburn, A. & Williams, L. (2001), The costs and benefits of pair programming, in ‘Extreme Programming Examined’, Addison-Wesley, chapter 14, pp. 223–244.

[7]   In Support of Student Pair-Programming——这次的论文

[8]   The Effects of “Pair-Pressure” and “Pair-Learning” on Software Engineering Education软件工程教育中的结对压力与结对学习的影响——这次的论文

[9]   Case Study: Extreme Programming in a University Environment

[10]   EXTREME PROGRAMMING FOR SOFTWARE ENGINEERING EDUCATION? 软件工程教育中的极限编程

[11]   Guidelines for the Use of Pair Programming in a Freshman Programming Class在新生程序设计课程中使用结对编程的指导方针

[12]   The Impact of Pair Programming on Student Performance, Perception and Persistence学生结对编程的实践效果:性能,理解,坚持

[13]   Working in pairs as a means for design knowledge building: an empirical study结对工作作为一种设计知识积累的方式:完全经验主义的研究

[14]   Kim Man Lui & Keith C.C. Chan, “A Cognitive Model for Solo Programming and Pair Programming 的认知模型”, Proceedings of the Third IEEE International Conference on Cognitive Informatics (ICCI’04), 2004

[15]   Matthias M. M¨uller & Frank Padberg, “An Empirical Study about the Feelgood Factor in Pair Programming完全经验式的研究关于结对编程中的情感因素”, Proceedings of the 10th International Symposium on Software Metrics (METRICS’04), 2004

[16]   Laurie Williams, Anuja Shukla, Annie I. Antón, “An Initial Exploration of the Relationship Between Pair Programming and Brooks’ Law结对编程与布鲁克斯法则之间关系的初步探索”, Proceedings of the Agile Development Conference (ADC’04), 2004——北卡罗琳娜州立大学

[17]   Hiyam Al-Kilidar, Peter Parkin, Aybüke Aurum, Ross Jeffery, “Evaluation Of Effects Of PairWork On Quality Of Designs设计质量上结对工作的效果评估”, Proceedings of the 2005 Australian Software Engineering Conference (ASWEC’05), 2005——澳大利亚,新南威尔士大学

[18]   Work in Progress - Unexpected Student Outcome from Collaborative Agile Software Development Practices and Paired Programming in a Software Engineering Course工作进展——在软件工程课中不可预料的学生成果从协作敏捷软件开发实践和结对编程

[19]   Towards Increasing the Compatibility of Student Pair Programmers有助于提高适应性的学生结对编程

[20]   Undergraduate Student Perceptions of Pair Programming and Agile Software Methodologies Verifying a Model of Social Interaction大学生理解的结对编程和敏捷软件方法学:群体交互验证模型

[21]   How and Why Collaborative Software Development Impacts the Software Engineering Course影响软件工程课程的协作软件开发应该如何做,为什么要这样做

[22]   Pair Programming in Graduate Software Engineering Course Projects在毕业生软件工程课程项目中的结对编程

[23]   Work in Progress - Effect of Instructional Design and Pair Programming on Student Performance in an Introductory Programming Course工作进展—在介绍程序设计课程中的学生成绩在指导设计和结对编程上的影响

[24]   Changing Students’ Perceptions: An Analysis of the Supplementary Benefits of Collaborative Software Development改变学生的理解:一个针对协作软件开发附加好处的分析

[25]   Empirical Validation of Test-Driven Pair Programming in Game Development在游戏开发中测试驱动和结对编程的经验验证

[26]   Examining the Compatibility of Student Pair Programmers学生结对编程的兼容性检查

[27]   Jari Vanhanen & Casper Lassenius, “Effects of Pair Programming at the Development Team Level: An Experiment在开发团队层面上结对编程的效果:一种经验”, 0-7803-9508-5/05/$20.00 (c)2005 IEEE, 2005——??这个引用不知该如何修改。

[28]   Debunking the Nerd Stereotype with Pair Programming结对编程揭穿愚蠢的陈词滥调

[29]   Joseph Chao & Gulgunes Atli, “Critical Personality Traits in Successful Pair Programming成功结对编程个性特点的评价”, Proceedings of AGILE 2006 Conference (AGILE'06), 2006

[30]   Hanna Hulkko & Pekka Abrahamsson, “A Multiple Case Study on the Impact of Pair Programming on Product Quality关于结对编程在软件质量上的效果的多个案例研究”, ICSE’05, May 15–21, 2005, St. Louis , Missouri , USA . 2005——反面观点论文

[31]   A Multiple Case Study on the Impact of Pair Programming on Product Quality研究结对编程对产品质量影响的若干案例分析

 

你可能感兴趣的:(编程,工作,validation,performance,Thoughtworks,pair)