论坛首页 综合技术论坛

对于结对编程我有疑问

浏览 25645 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-12-20  
halcyon8 写道
首先团队的成员是要有xp思想和相近水平的.如果你的同伴不愿意交流或无法交流,pair programming只有害而无益


不一定要有XP思想和相近水平,只要愿意交流,通过结对总可以工作得更好。不愿意交流或者无法交流的人,我觉得,他最好的位置就是缩在角落啥都不要干,不造成副作用就很好了。

halcyon8 写道
第2,pair programming不是8小时的,5个小时足够了.


没错。4小时紧凑的工作足以让人累得不行。所以XPer是没办法加班的。
0 请登录后投票
   发表时间:2004-12-20  
我们现在同时在作JDO的开发和一个电信的项目, 7个人,1个是需求扮演on-site customer,3 pairs,我杂事比较多,只要一有空,我就pair。其他人轮换。

7个人中4个是第一次作xp。奇迹般所有人都很open,这里只有经验多寡之分,没有高手低手之分。

项目时间极紧张,20天。好了,不敲了,要做集成测试了。
0 请登录后投票
   发表时间:2004-12-21  
armlinux-w 写道
凤舞凰扬, 我理解结队编程应该是:

Hi, 我这有问题, 可以帮忙看一下吗?
没问题, 马上就到.
然后显示问题,讨论, 试探, 解决, 各回各家.

关键是: 随时提供帮助成为一种文化和习惯.  而不是偶发事件.

我觉得xp 致力于一种共同成长的学习型组织. 这样的组织文化我想在国内肯定特别的少.  营造这样的组织文化应该是很困难的. 可能太悲观.

     楼上的说法很不错,我个人也觉得,如果将结对编程理解并实践成这样,实施的可行性是相当高,所起的作用也会不错。
   只是,我想更多的了解在作者愿意的情境下成功的例子。
0 请登录后投票
   发表时间:2004-12-21  
lucifer 写道
对于凤舞凰扬的疑问,我可以试着说明一下我自己对于结对编程的理解,首先要说明的是,个人认为结对编程是一种很不错的实践,不过要获得好的成绩要具备了一定的条件才可以
我就是想知道这种条件以及现实的环境是否具备这样的条件。
引用

结对编程不是说结对的成员一直在一起工作的,而是每隔一段时间(很短的时间,甚至有可能是一天)就互换同伴,这样可以保持工作的高度集中和每个成员对于整个项目的把握。其实,结对编程中的成员水平应当在相差不大的档次上,要么就会像楼主所说的出现质量问题。
首先,我们考量一下这样的每段时间,换句话说,也就是一个人在每天或者每一段时间会做着截然不同的内容,我不清楚那应该是一个怎么样的系统,但是我知道,一个真正的企业系统,关理解同一个模块的内容都是需要相当长的时间几个月甚至半年,而且这还是有比较充分的分析和设计的情况下。今天把你丢去做工作流,明天把你丢去做权限,后天把你丢去做财务分析。我不清楚,人的分配人员的调整谁来负责,谁来做?我今天刚刚想到一个解决问题,但是上司要调我去另一块(因为也许其他人都完成等这掉换),是不是就丢弃。感觉很像一个喜欢到处去拣水果的熊。

引用
呵呵,这里要说明的是,结对编程这个实践要求成员必须要有高度的专注力。在和同伴一起工作时,必须保持你的思维一直高度集中,如果这样不行的话那么代码质量还是会下降。这也是为什么XP提倡每周只工作40个小时,而且要求工作环境中要有设置完备的休息室(这个休息室我想国内可能没多少公司会实现,口水ing)的原因。没办法,这个实践对于体力的要求实在是太高了。至于同伴的事务以及休息时间,其实没有必要两个人一直在一起,可以两个人制定一个目标,可以在很短的范围内完成,比如一个小时,这个目标一旦实现,就可以休息一段时间。同伴有事需要离开的时候,可以找其他人看有没有空闲或者干脆休息好了。
首先说明这样的工作环境要求并不高,并且很多公司也没有40小时/周,一天都是7和7.5小时。但是任何一个做软件的人,如果认为人每天都保证7.5小时100%工作是不可能的,也没有任何一个人会是这样长期的工作。在这样一种不可能(是人不可能而不是环境)的要求进行实践,是不是盲目?有些照搬书的味道。

引用

对于配置管理的问题,我也不是特别清楚。因为XP提倡代码共享,提倡每个成员应当把握整个项目的进度,对于项目有着比较深的了解。其实XP本来就只适用于小型团队开发,如果是大型项目的话还是不要用XP的好。至于员工考核的部分,记得CMM顾问给我们培训的时候也提到过,不要把员工的绩效和代码量,bug数等等因素挂钩,这一点特别重要。因为每个人都有各自的情况,甚至于每个人不同天都有不同的情况,对于软件开发来说,只能对于组织或者项目进行量化来进行SPI,来检讨运行中的问题。最好不要把这些因素用来评价员工的绩效,因为这些因素本身就包含了很多不可预测的因素,一旦出现一些问题的话,很容易就会打击员工的积极性。
至于绩效考核以及人的评估体系,那是人力资源部所做的事情,但是我上面列出历来都是有比较严格企业规程软件公司的标准之一。XP适合于小团队,我是赞成。但我部清楚怎么叫每个成员把握项目的进度?怎么理解把握这个词?因为我相信,在绝大多数中国的软件项目中,成员的能力经验水平以及性向(是性格取向)都是不同,或者说是可以阶梯化的。要最基层的成员怎么个理解项目的进度并且把握?绝大部分程序员能把握的只是自身任务的进度,而不是项目整体的进度以及迭代模式,否则,不个个都可以是项目经理了么?

引用

结对编程的效率超乎想象,很容易就可以出现1+1>2的情形。因为两个人同时参加编程,就等于已经有了一遍代码评审,实际上pass around的评审方式就是这样进行的。这样情况下出错几率就降低了很多,有效的减少了bug的产生。这样的话下面的一系列的流程都可以少很多工作量,比如测试,比如bug tracking。着眼于整个项目来看,这个实践确实大大提高了效率。至于加班,XP中不提倡加班。仔细想想,其实项目的很多时间都花在了修正bug和测试上面,如果从根本上就降低了这种情况的可能性,那么效率是不是就提高了很多呢?
从全程来看,我相信结对编程是缩短了项目的整体时间,但是,问题是客户、企业关注的是软件是否完成的时间,而不是最终实施的时间,难道楼上没有这样的经验么?企业领导,客户是问你做完没有,问你是否能够提交,而不是说提交后要多久才可以真正实施。如果纯粹通过double开发的资源(人力或者时间)从而降低整体的质量和时间,那么是否又违反了XP的另一个实践呢?

引用
先说明一点,我对于各种CASE工具没有什么好感。因为生成漂亮的图对于我们没有什么实际的用处,图是用来交流的,不是用来看的。可以两个人讨论来进行一个功能的实现,可以借助一张纸,或者白板,或者什么东西。只要可以明白对方的意思就可以了。注意:结对编程中两个人的地位是相等的,而不是有主次之分。而且有什么想法通过交流后两个人都觉得可行,就可以写出测试用例,再来写出实现。如果先前的想法又问题的话,可以通过重构来改变代码的结构。所以这里提倡频繁运行测试,有了问题可以及早发现及早解决,重构也相对容易一些。对于到处充满了坏味道的代码,我想没几个人愿意忍受着痛苦去修改的。
根据楼上这一点,我就可以确切知道楼上是通过纸笔绘出思路,然后用编程,再通过不断的重构(形容类似于曲线的模拟逼进吧)来达到设计思想的表现,但我想说明的是,第一你画的图和你编写的代码是两码事,设计辅助工具的双向转换的目的就是在于此。第二中国的绝大多数程序员对于UML的理解或者说表达没有那么好的功底。第三,如果有很多人可以关从代码或者从编程人员若有若无的敲键瞬间就可以很快看懂一个程序或者模块的设计思路和想法
,呵呵,那大家都是神童了。首先声明,我不具备这样的能力。
引用

最后,我想说的结对编程在握看来应该是一个很好的实践,至少从各位大师的书上看来如此。可是,真正实践起来需要一些条件的。我就试过一段时间,痛苦不堪。为什么,因为我的同伴根本不去思考,根本不和我讨论。这样的实践是没有一点用处的,只能说自己累的要命,做出来的成绩却是两个人的……不过,我就知道身边有成功的例子,唯一的坏处就是对体力要求太高,基本上周末也没什么力气加班了,因为根本就爬不起来。:)
从任何一本书上我都知道这是非常好的实践,我也相信作者的目的和实践的来源的准确性。,但是问题是,在应用上,在中国软件企业的应用上,在中国软件项目的应用上,又有多少个项目团队,多少个人真正成功应用了这些实践,如果是,那么我问的问题自然也就不是问题,不是么?
0 请登录后投票
   发表时间:2004-12-21  
其实从很多网友的帖子我已经看出,实施这个XP实践的往往都不是照搬,而是根据实际情况进行调整,比如说,局部的结对编程(包括人员范围、时间范围、模块范围),然后将经验推广。大家更多地将结对编程理解为一种share,一种技术,经验,知识的share,通过共同商讨、解决问题,来提高communication,来降低误解和疏远。
   对那些能从中获益的朋友,我非常恭喜,也渴望向之学习。
   其实讨论这个问题的最终目的,我只是想说明,很多东西并不能照搬,仅此而已。
0 请登录后投票
   发表时间:2004-12-21  
嘿嘿,以上的看法纯属个人看法。懒得敲字了,一会还得开会呢。这个问题实在是比较复杂,一时半会也难以说清。

不过,严重同意凤舞凰扬的看法,就是不要照搬,要根据自己所处的环境来理解,来实践。

还有,我们并不是用纸笔来画图,然后重构。这个只是我自己的实践而已。我们团队都是用CASE工具的,但是实际过程中由于人员素质的问题,导致往往错误百出,这也是我比较郁闷的地方。

不过有一点要说明的是pair programming确实很累,累的要死。以至于每天5到6个小时就累的不行了。
0 请登录后投票
   发表时间:2004-12-22  
体力要求实在太高了。。每次做完两个小时,好累。但看着成果,我跟我同事说,今天早上也就差不多了。
0 请登录后投票
   发表时间:2004-12-27  
凤舞凰扬 写道

首先,我们考量一下这样的每段时间,换句话说,也就是一个人在每天或者每一段时间会做着截然不同的内容,我不清楚那应该是一个怎么样的系统,但是我知道,一个真正的企业系统,关理解同一个模块的内容都是需要相当长的时间几个月甚至半年,而且这还是有比较充分的分析和设计的情况下。今天把你丢去做工作流,明天把你丢去做权限,后天把你丢去做财务分析。我不清楚,人的分配人员的调整谁来负责,谁来做?我今天刚刚想到一个解决问题,但是上司要调我去另一块(因为也许其他人都完成等这掉换),是不是就丢弃。感觉很像一个喜欢到处去拣水果的熊。

我觉得结对编程在人数多,交换结对频繁的情况下能够促进沟通(xp4原则之一),确实有到处捡水果的意思。
但我个人认为xp对团队要求很高,团队人员是上来就能做的人,和项目相关的技术都已经大致掌握或很容易上手,那种边做边学还不能跟上的人不适合xp团队,但谁都不可能是任何领域的专家,那么在你不强的地方就对和你结对的人有着高要求了,他得能带带你,并且能知道什么时候你成手了。
这样的话我想到处捡水果也无所谓了。:)
0 请登录后投票
   发表时间:2006-01-19  
我想楼上的人真的实施过pair programming 吗,我们一直想试一下呀
0 请登录后投票
   发表时间:2006-01-24  
两个人坐在一起只是个形式而已。经常互换作Code Review同样可以保证代码的质量,不一定非要坐在一起。我更喜欢短会+头脑风暴的方式。把主要代码的结构和流程,类之间的关系大家讨论一下就OK了。再说也不一定所有人都喜欢边写旁边还有个人边看边说的。:)
0 请登录后投票
论坛首页 综合技术版

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