对于极限编程很早就开始关注了,而且有一段时间msn就叫做“拥抱变化”,但是一直没有什么实践,典型的属于只想不做,起大早还赶不上晚集一类。
关于xp有两个中文站点起步的很早,而且里面的成员也在各地做过一些推广,但是最近他们都没什么更新
http://www.qca.cn/agilechina/
http://www.chinaxp.org/forum/forum.jsp
这是xpchina以前做的一些培训资料,不知道他们现在还在各地做推广吗
Andrew J. Dick的关于pair programing的演示
http://199.243.248.196/forum/paired-presentation.pdf
关于pair programing,记得rose出过一本白皮书,名字忘了叫什么,讲得很详细,把员工工作环境的图都画出来了。
结对编程的一个主力网站http://www.pairprogramming.com/
结对编程是xp的基本实践,也是一项纪录严谨的工作,很多人需要时间来适应这种工作模式,而且刚推行的时候也很有可能会有人会跳出来抱怨工作变得有趣的同时,还会变得很累。
我的文档里有两段从论坛摘录的关于结对编程的讨论
1:
Re:关于理想时间的疑问 发贴:charles 2003.05.24
>比如我工作了5个小时,应该算是多少的理想时间呢?
那就是5个小时了,如果过去5小时你没够被严重打断。比如中间去看了2小时的会,看了3给小时医生。如果你发现自己会被严重打断,需要及时提出并获得二外时间。
〉为经常更换pair,对于每个task 所用的时间难道掐表计时?
是的,xp的task是按小时了计划的。tracker回每隔2小时,询问所有pairs的工作进度和完成信心。如何能高校按时完成task,需要developers对每个task做严谨的计划。每个task都应该有一个仔细的todo list。比如说一个task,估计需要24个小时(3 days),如果你的todo list友30个items, 那很容易从完成的items和花费的时间就知道是否能按时完成。
没有不劳而获的。XP里神奇的8小时工作日,是依靠严谨的计划和高效的工作来获得。XP里每个pair的每个小时都需要出成果(完成todo list上的itmes),如果tracker每隔2小时来询问发现你再todo list没有什么进步,要么你没有好好工作,要么你遇到难题,这些都是需要managment解决的(否则project manager/team lead做什么?)。
很多developers再没有daily计划的情况下,可以在电脑前花费3-4个小时也做不出什么东西(包括我自己也会).仔细计划自己的工作是一个好的方法, 这对所有人都很清楚,也很简单。置需要那张纸,列出3--8小时内要做的东西。然后去完成他们。 但有多少人能够做到每天仔细计划自己的工作呢。xp要求develoeprs这么做。并且做到极限(就是一个3-4小时的task,也需要列清楚没个小时的工作)。
要求高ma?好象小学的时候老师就这么教的了?
2:
Extreme Programming 论坛 / 关于Pair programming的一些疑问!
浆糊 2002.07.01, 14个回复, 365次浏览
Pair programming会不会降低开发效率?看到一些文章说可以提高,但是觉得还是有些悬。我感觉Pair programming注重的是系统的健壮性,而不是开发效率。
回复
Re:关于Pair programming的一些疑问! 发贴:charles 2002.07.01
>Pair programming会不会降低开发效率?看到一些文章说可以提高,但是觉得还是有些悬。我感觉Pair programming注重的是系统的健壮性,而不是开发效率。
pair programming降低开发效率?well,至少在我的XP经验中没有出现。类是的文章我也看过一些,他们都有提出数据来说明,主要是说XP再overall的流程中可以别其他方法节省25%(correnct me if I remember wrong)的时间。
我的看法是赞成他们的说法的。因为我真的有过类似的比较。而这个比较甚至不是在一个真正的XPteam和一个传统的development之间的比较。
是这样的,当时我离开了XP team而转到一家wirless application company为他们设计和开发一workflow appplication。这公司按传统的方式管理。我一个人负责一个distributed agent framework的设计和开发。其他模块则由另外的developers开发。由于我已经习惯了XP的开发模式,所以即使一个人,我也还是按照XP的流程来安排自己的工作。自己写user stories(我自己就是客户, ,划分 engineer task,estimate(以小时数为单位),unit test first,continuous integration test,code review,cnotinuous refactoring.但一个人,无法做pair programming,code reivew也无法很充分.
而同时其他developer则采用传统的方式,设计文挡,class diagram,sequence diagram,coding,自己的
手工测试.
开发两个月后,第一个release进行integration和QA,其他developers重复 bug fix <----> QA的漫长的过程.而我则因为有较充分的unit tests,在developers近一个月的bug fix时间内,我几乎无事可做.可是其实我的code和在XP team时的code的质量已差了不少.
从那时起,我开始成为XP的believer,而不是我在XP team的时候.
回应这个帖子 回复
Re:Re:关于Pair programming的一些疑问! 发贴:charles 2002.07.01
而说道效率,我是这样看的.
在一端时间的适应和磨合后,pair programming的效率比一个人高.
仅从一天八小时的分配和利用上来看,pair programmnig就比一个人高。老实说,一个人的一天真的工作八小时么?我看不见的吧。据统计,一个人一天真正有效率和时间不超过4小时。我想developer对此一定有体会。一通常是在莫个时段的效率高和工作可以顺利进展。其他时候可能很难集中精力,也许就是看看internet,聊聊天,或则磨一磨就过去了。不是懒,而是人的生理周期。如果每个developer都有一个小格子,就更难监管效率。而再pair programming中,你几乎一天八小时都受到你的同伴的压力,除非你们一起偷懒,否则你不好意思偷懒的。所以你一天都是在认真工作的。 由于两个人一切写程序,两个人可以轮流些,不桥键盘的developer就可以休息一会。这样可以防止疲劳工作。而frequent standup meeting也逼使developers有效率的工作。我其实认为XP是更剥削的一种管理方式 ,他真的提供了一整套方法来促使developer每天都充分高效和认真的工作。所以所谓的不加班其实是因为XP的方法能提高developers再八小时内的工作效率来实现的 。
还有就是高质量的code大幅较少了bug fix <-----> QA的反复,continuous integration test也保证岁时发现问题而尽早解决问题,而不是把问题留到release或produciton前的一刻等等这些都缩短了开发周期
回应这个帖子 回复
Re:Re:Re:关于Pair programming的一些疑问! 发贴:netwiser 2002.07.01
同意Charles的解释。
回应这个帖子 回复
Re:Re:Re:关于Pair programming的一些疑问! 发贴:浆糊 2002.07.01
1。pair programming比一个人的开发效率是高,但是比2个人呢?
2。在上面的帖子中可以看到,是经过实践证明的,test unit是绝对重要,如果不用pair programming,2个人分开来做,也进行test unit.是不是可以省去不断修改bug的时间?
3。在pair 组成的时候是需要磨合的,两个人写程序,肯定要商量和讨论,这个对系统本身来说是有好处的,但是是对于系统的合理性和健壮性而言,不是效率。
4。就象上面我说的,单独的两个人,做好test unit,保持continuous integration test,这样在集成时候的时间是不是可以减少?
回应这个帖子 回复
Re:Re:Re:关于Pair programming的一些疑问! 发贴:cinc 2002.07.01
>我其实认为XP是更剥削的一种管理方式
呵呵,这个观点比较有意思。
但是 是不是 pair programming 要求两个人水平差不多,否则效率比一个人还要低。
回应这个帖子 回复
Re:Re:Re:Re:关于Pair programming的一些疑问! 发贴:charles 2002.07.01
>1。pair programming比一个人的开发效率是高,但是比2个人呢?我觉得高质量的code,高效率的沟通就意味着效率和节省时间。如果说的效率是指 tasks/每天,那当然是独自编程在帐面上看效率高了。如果有八个人,XP一天只能开4个tasks,非XP则开8个tasks。其实很难说pair programming是否一定比2个人的效率高。绝对的量化来看没有太多的意义。比如说两个junior developers 的pair 未必就比两个 senior develops的工作效率高。XP是通过对整个development team的所有开发环节的优化来在总体上提高效率。但XP是否能在所有的公司提高效率?不一定的。XP也有他的局限性和条件的。
>2。在上面的帖子中可以看到,是经过实践证明的,test unit是绝对重要,如果不用pair programming,2个人分开来做,也进行test unit.是不是可以省去不断修改bug的时间? unit test只是XP环节的一个,依靠unit test是能够明显的提高质量的,但pair programming的优势并仅仅体现在写unit test上。pair programming的好处还有:
1 pair programming是一种互相监督的过程。一个人写unit test回有漏写的情况,人总是比较懒惰的,我自己一个写的unit tests就明显比在pair programming时少很多。
2无法continuous code review.Code Review在项目中极其重要。在我看到过的非XP的项目中,没有真正的code review。虽然很多公司都有安排code review的环节,但多是整个team每个星期一两个小时来做code review.这样的code review环节有和没有差别不大。而且一旦出现什么意外的安排,通常code review的环节都是首先被省略的。独自编程由于每个人的task的完成时间不一样,很难安排continuous code review.而且code review的条件是参与者对需求和设计都很了解。
3pair programming是互相学习过程。pairs不断的交换的,通常一个task换一次,我更听说过每半天换一次的。而pair的task也是随机的。比如说A and B was working on task 1,而task 2是在task 1的基础上继续,二者是通常会有B和C继续作Task 2,而A则和其他人pair.由于C完全没有做过task A,而B则能很快得帮组C来了解task A/B的设计等,这样如果task C是B的继续,C则可以作为一个新的pair的主导.这样一个项目下来,所有的developer都在所有的在模块上工作过.也了解整个系统的设计和运作。如果是分开独立工作,一段时间后,就会像过去一样,一个人一大块,别人无法插手。沟通也出现问题。
>4。就象上面我说的,单独的两个人,做好test unit,保持continuous integration test,这样在集成时候的时间是不是可以减少?
当然可以了。如果你的developers都是很displined的,大家都能自觉写test,自觉code reivew,自觉作contiusous integration test。就像UP,如果所有人都100%的follow process,UP也一样能保证项目成功的。
回应这个帖子 回复
Re:Re:Re:Re:关于Pair programming的一些疑问! 发贴:charles 2002.07.02
>但是 是不是 pair programming 要求两个人水平差不多,否则效率比一个人还要低。
两人水平差不多是最好的了。你说的情况是很有可能的。如果developer们不能适应的话。只要developer能比较open,即使水平不一,也能有效的工作。当然不同的人合作,效率也是不一样的。
但XP的优势就在这里,一个水平参差不起的team在一段时间的开发后,总体水平可以很快提高。而效率也相应提高了。但是这个过程可能较长。depends on the people
我当时工作的team里工作了很多年的资深developer,也有刚刚学了3个月java的中途转行的junior java developer,但所有人的共有特性就是都很开放。经过2-3个月的合作,junior们的水平明显提高,可以和外面很多号称senior的比一比了。
回应这个帖子 回复
Re:Re:Re:关于Pair programming的一些疑问! 发贴dming 2002.07.02
我其实认为XP是更剥削的一种管理方式
有意思;)
不过我觉得这么多的论述里面忽略了一点,那就是心理方面的分析。
一个人的思维往往会走向定势,pair programming有利于发散思维,同时两个人互相借鉴学习对方的经验。
pair programming除了相互监督之外,还要考虑好胜心以及求知欲,当一个程序员提出了一个很好的建议,常常会刺激另一位想出更好的办法来。
当双方发生分歧的时候,通过有益的辩论,更容易接触得到问题的本质,正所谓理不辨不明,从而得到一个好的解决办法。
回应这个帖子 修改 回复
Re:Re:Re:Re:关于Pair programming的一些疑问! 发贴:holly 2002.07.02
我觉得上面说的大多数是正面的论述
从人的惰性, 得过且过, 做一天和尚撞一天钟的角度来看问题就是两样的结果了.
这个可以让 netwiser 说说苍蝇拍理论, 我打汉字太慢
回应这个帖子 回复
Re:Re:Re:Re:Re:关于Pair programming的一些疑问! 发贴:netwiser 2002.07.02
为何让我来说苍蝇拍理论,此立论是你提出来的。呵呵:)
回应这个帖子 回复
Re:Re:Re:Re:Re:Re:关于Pair programming的一些疑问! 发贴:holly 2002.07.02
呵呵, 没看到我说打字慢吗?
回应这个帖子 回复
Re:Re:Re:Re:关于Pair programming的一些疑问! 发贴:charles 2002.07.02
还有一个有趣的想象就是凡是作过XP,pair programming的程序员都汇变得很open-minded,很nice和很容易和人相处。
回应这个帖子 回复
Re:Re:Re:Re:Re:Re:关于Pair programming的一些疑问! 发贴:charles 2002.07.02
netwise,holly有空开一个新的thread讲一讲苍蝇拍理论啊?
回应这个帖子 回复
Re:Re:Re:Re:Re:Re:Re:关于Pair programming的一些疑问! 发贴:netwiser 2002.07.03
呵呵,我一向来是比较懒的,长篇大论的东西更是写不来。
看看,找个时间回忆一下。
回应这个帖子
打印 | 张贴于 2004-02-09 11:33:00 | Tag:拥抱变化

留言反馈
应该是smartkid.blogone.net
:)