??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕无码精品亚洲资源网久久 ,亚洲人成77777在线观看网,亚洲熟女一区二区三区http://www.tkk7.com/moxie/archive/2006/09/14/69714.htmlmoxiemoxieThu, 14 Sep 2006 09:53:00 GMThttp://www.tkk7.com/moxie/archive/2006/09/14/69714.htmlhttp://www.tkk7.com/moxie/comments/69714.htmlhttp://www.tkk7.com/moxie/archive/2006/09/14/69714.html#Feedback8http://www.tkk7.com/moxie/comments/commentRss/69714.htmlhttp://www.tkk7.com/moxie/services/trackbacks/69714.html Q本文发表于《程序员杂志》第?ji)?略有删改Q?/span>

 (tng)

 (tng) 作者:(x)钱安川(MoxieQ?/span>

Email:qiananchuan@gmail.com

我们Pair 做Q何一件事情?/span>

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)  (tng) —?/span>ThoughtWorks 西安Office

pair.gif

我的W一?/span>PairQ?/span>Pair Programming的简Uͼ即结对编E。后面都是用Pair代替Q是?/span>ThoughtWorks公司面试q行的。那ơ,他们来自英国的项目经?/span>Andy面试我,和我一赯?/span>Pair?/span>Andy问我以前是否Pairq,我说Q“没有,q是我第一?/span>Pair”。随即他告诉我Q?/span>It’s very fun.Q它非常有趣Q。?/span>

pP开始了(jin)我的W一?/span>PairQ也是加?/span>TW最重要的一轮面试。其实,刚开始很不习(fn)惯,我那可怜的p口语Q陌生的试优先开发(TDD Test Driven Development (tng) 一UY件开发方式,先写单元试代码Q再写业务代码。我以前也写q很多单元测试,但从没有试优先Q。当我看到需求文档时Q大脑几乎是一片空白,不知从何处下手?/span>

但面试M能就q样攑ּ吧。我又仔l看?jin)一遍文,试着写了(jin)几段业务代码。做在我旁边?/span>Andy摇了(jin)摇头Q从我手里拿?jin)键盘。他说应该这样做Q先写测试代码。于是他一边和我解释业务需求,一边写试代码。ƈ提醒我,如何d一个复杂的功能q行分解Qƈ且小步伐的前q?/span>

?/span>Andy的引gQ我慢慢的进入了(jin)角色。充分理解业务之后,也就清楚?jin)该如何写业务代码。我?/span>Andy那里要了(jin)键盘Q又写了(jin)几段代码。然后运行单元测试,l色状态,试成功?/span>Andy微笑的向我竖起了(jin)大拇指?/span>

受到鼓励的我Q这是已完全放松q入状态。我们又试着完成?jin)几个功能。这Ӟ我们已经不只觉的渡过?/span>2.5个小时?/span>Pair实是一仉常有的事?/span>

q入ThoughtWorks公司之后Q发现在大家不仅Pair~程Q还Pair研究技术,Pair撰写文章Q?/span>Pair译Q等{。只要是Pair能完成的工作Q我们就不一个h完成。甚臛_生活中也出现?jin)很?/span>Pair的媄(jing)子。在我们的西?/span>Office里流传这样一句话Q“我?/span>Pair做Q何一件事情”。两个hPairQ可以一起一起分享工作乐,一h担工作压力?/span>

q些天的Pair生活Q让我深׃?x)到?/span>Pair的优炏V?/span>

一?/span>Pair 可以最大化的提高工作效率?/span> 软g开发ƈ不只是程序员堆砌代码的过E,它更多的是一个创新的q程Q是一个发现问题、分析问题、解决问题的q程。一个h~程Ӟ往往有了(jin)一丝零的x(chng)开始编写代码。写完代码之后,忽然发现q个Ҏ(gu)行不通,只好废弃q些代码Q重新开始新的想法。当一个h在遇到疑N题时Q很Ҏ(gu)走入“死角”。?/span>Pair则不同,一个h有了(jin)x(chng)Q首先要表达出来Q让自己的同伴理解,l过深刻的讨论,一致认可之后才开始编写代码。一个h~写代码Q另一个则在旁Ҏ(gu)考,?x)?f)下一步的工作提出性的意见。发C(jin)问题可以?qing)时的指正。大大的提高?sh)(jin)代码质量?/span>

一个h一天有效工作时间不过3Q?/span>4个小时。两个h一?/span>Pair。一个h~写代码Q另一个h则从设计的角度思考下一步的工作Q有?jin)想法之后,互相讨论Q再互换角色。在开发过E中Q设计思考和~码实现不停的进行交换,保持?jin)良好的开发节奏。同时可以互相督?j),使彼此更加认真的工作。遇到问题和压力Ӟ可以一起面对,互相鼓励。可以一起分享解决问题的成就和乐?/span>

二?/span>Pair 是知识传播的最好途径?/span> 很多软g公司都徏立有自己的知识库Q有的还建立自己的培训部门,甚至高薪聘请一些专家做技术培训。但发现效果q不理想。培训之后,开发h员面临实际的目Q还是一片茫然。而与有经验的同事一?/span>Pair则是在实际项目中学习(fn)Q具有非常强的针Ҏ(gu)。你学到的不仅是一些技术和技巧,更多是他们思考问题方式、解决问题的Ҏ(gu)。和各种不同l验的同事一?/span>PairQ你的经验和能力可以得到快速的提高?/span>

?/span>ThoughtWorks公司Q如果你要加入一个项目,完全不用担心(j)它用的技术和涉及(qing)的业务。只要你有一定的基础Q和有经验的同事一?/span>Pair能让你很快熟(zhn)和掌握它们?/span>

三?/span>Pair 可以打造出最佳的合作团队?/span> 团队是有l织有计划的Q合理有效地利用各种资源Q进行最佳的l合?/span>Pairq不是一对固定的伙伴Q我们鼓励在团队中经怺?/span>Pair伙伴。这时我们发玎ͼ目不再是一个h的事情,也不是两个h的事情,而是整个团队的事情?/span>

通过PairQ大家可以在最短的旉内完成磨合?/span>Pair很好的促(j)q了(jin)团队的沟通交,l常一起合?/span>Pair的伙_(d)彼此?jin)解、熟(zhn),很多都是工作和生zM的好友。在q样的团队里Q大家很乐意互相协助Q一起分享知识,分n快乐?/span>

 (tng) 在听q我们一番热情洋溢的阐述之后Q某些项目管理者会(x)点头q且认可Pair带来的力量。但Q我们也听到?jin)一些拒l?/span>Pair的声韟뀂下面是我们听到的拒l?/span>Pair的最主要的理由,当然也包括了(jin)我们的辩解?/span>

一?/span> Pair 费资源?/span> 以前是一个h完成的工作,而现在却是由两个Z起完成。一个h在写E序Q而另一个却在旁边观望。ؓ(f)开发h员支付报酬的老板是多么心(j)疼那些白p的银子?/span>

 (tng) 可是Q作板的你可曾做过l计q,每天加班工作12时Q满脸疲惫的开发h员到底ؓ(f)你创造了(jin)多少的h(hun)|在这漫长?/span>12时中,能高效工作的旉又能有多呢Q一个开发h员每天编写几百行的代码,可是真正h实效性的代码又有多少呢?

 (tng) 软g的本质就是很隄一U标准去衡量它的q度和实效性。开发h员能力的高(sh)低、经验的多与、工作的d与被动,对Y件开发的成本有非常大的媄(jing)响。前期糟p的代码Q在后期修正Q是需要付出几倍甚x(chng)多的代h(hun)。在软g的行业里Qh月和代码行永q是话?/span>

?/span>1999q_(d)犹他州立大学Q?/span>University of UtahQ做?jin)一试验?/span>.两组学生Q一l独自工作(一?/span>13人)(j)Q一l?/span>PairQ一?/span>28人,?/span>14对)(j)。他们完成相同的dQ由助教预先设计和开发了(jin)试案例Q?/span>

下面的表|图-1Q是完成相同的四个程序,独自工作?/span>Pair工作使测试案例成功通过的百分比?/span>

test cases passed.png

Q图Q?/span>1Q?/span>

下面的柱状图Q图Q?/span>2Q则是完成相同的E序Q两l所p的时间比。虽?/span>Pair的学生在刚开始的阶段比独自工作的学生花在同样d的时间较多,但很?/span>Pair的学生的旉开始大q度的下降。而独立工作的学生需要花Ҏ(gu)Pairs更多的时间来辑ֈ接近的代码质量?/span>

elapsed time.png

Q图Q?/span>2Q?/span>

而且Q在具体目中?/span>Pair?x)带来比上面l果更高的h(hun)倹{一、在实际开发中Q如果错误越多,pp多的时间去修复它。在我们的试验中Q没有统计修复错误所p的时间。二、从图-1可以看出Q?/span>Pair在生高质量代码Ӟ也即意味着寚w求的准确理解。个人团队对需求理解偏差比较大Q后期也要花Ҏ(gu)大的代h(hun)来纠正。三、从图-2可以看到Q?/span>Pair的团队开发能力提高很快,q是潜在的h(hun)倹{?/span>

在比较试验之后的问卷调查之后发现Q?/span>

ü (tng) (tng) (tng) (tng) (tng) Pair能用较少的时间生产更高质量的代码?/span>

ü (tng) (tng) (tng) (tng) (tng) Pair的学生们认ؓ(f)自己比一个h的时候更勤奋和更聪明的工作,因ؓ(f)不想让自qpartner失望?/span>

ü (tng) (tng) (tng) (tng) (tng) Pair的学生认己比一个h的时候更专著,紧凑和由U律的工作,而且是持l的。而独立工作的学生也可以专著和紧凑的工作,但往往不持l?/span>

ü (tng) (tng) (tng) (tng) (tng) 在紧张时间安排和J重的工作压力下Q独自工作的学生很容易蜕变(sh)ؓ(f)没有U律的程序员?/span>

 (tng) 同时Q在ThoughtWorksq样的咨询公司,每个开发者都是能够独挡一面?/span>ThoughtWorks的开发者,在一般的软g公司都是cM目l理或架构师的角艌Ӏ你可以惌公司肯定要ؓ(f)他们提供不翡的待遇。可是,他们?/span>Pair做Q何一件事情,也从不认己是在浪费资源。相反,ThoughtWorks从实践中得出Q?/span>Pair能够充分的利用每个开发者,让他们发挥最大的价倹{?/span>

 (tng) 二、h手不够?/span> 也许Q在你的公司Q昨天又有一个老员工递交?jin)辞职申诗老板看着一张张新的面孔Q很无奈的摇?jin)摇头。招聘员工ƈ不困难。但如何让新员工快速进入角Ԍ掌握公司的技术和业务呢?

 (tng) (tng) (tng) 人员的流动一直是让很多Y件公叔R常困扰的问题。特别是老员工的dQ也意味着公司多年的技术和业务U篏的流失?/span>

而在Pair工作的团队中Q几乎不用担?j)这个问题?/span>Pair可以快速的q行知识传递,通过Pair?/span>Pair伙伴的交换,知识不再是掌握在一个h的手中,而是整个团队一起共享?/span>

?/span>ThoughtWorks内部Q工作的调整和变换是非常频繁的。但很少?x)对目造成影响。相反,q样的变换却加快?jin)知识的传递?/span>

 (tng)

三、开发者不能很好的合作Q?/span>Pair 对开发者要求太高?/span> 真的要求很高吗?看看求职历,不是每个开发者都口口声称自己h很好的团队合作精吗Q如果你不能很好的和别hPairQ团队精又从何谈v呢?

那Q何两个h都可以搭配进?/span>Pair吗?

不,Pair对开发者是有要求的。它要求开发者乐意和别h沟通、合作,要求开发者能够彼此尊重,愿意和别人分享自q知识。这不正是我们一直倡导的团队合作精嘛Q?/span>

Pair的搭配是一个有的问题。有Q最好的搭配是两个力相当。其实不?dng)?/span>Pair应该是一U多L(fng)变换l合。在Pair的团队中Q经验丰富的开发者有责Q带领ChQ传知授道解惑,同时可以享受传道的乐。新人,更应d找有l验的伙?/span>PairQ快速学?fn)提高自己?/span>Pair的核?j)就是沟通,只要两个很好的进行沟通,那么他们可以很好的搭配?/span>

关于Pair的实施,其实q不困难。我们需要的只是l验Q当然经验也只会(x)来源于实c(din)?/span>

最后,我要说的是:(x)我在ThoughtWorks中国Q有q多ơ和传说中的女天才E序员(sh)?/span>PairQ其中的感觉也就不用多说?jin),呵呵?/span>

 (tng)

参考资料:(x)

http://www.pairprogramming.com/ q是一个专门介l和研究Pair的一个网?/span>

联系作者:(x)

Email:qiananchuan@gmail.com

http://moxie.blogdriver.com/moxie/index.html



moxie 2006-09-14 17:53 发表评论
]]>
վ֩ģ壺 һѹۿ| ߲ŸԲ| þ޾ƷƷ| ĻƵ| þþþAVƬ| һëƬ| ߹ۿ| ѿav뾫Ʒɫҹ| ѿ۳ҹվ| ҹɫ˽ӰԺվ| ˳ɵӰ˳9999| һѹۿƵwww| ˳߹ۿa| AVרAVͬ| VAһ| ŷպ | ҹþþþƷӰԺ| վ| Ļ˳й| ޹Ʒþþþ| aƬav| ߹ۿ| ޾Ʒþþþϼ | ޹avһؼ| ۲Ƶѹۿ| CAOPORNƷƵ| ˳777߲| ޾Ʒ456| һ߹ۿѸ߹ۿ| һëƬԿ60Ѳ| 99Ļ| ޹þþþþþ| av߿վ| ҹ޾Ʒ| ϵĻ| ޹Ʒһڶҳ| һ| 1aëƬѹۿ| ޷츾| Ѹ߹ۿ| þþþ޾Ʒַɫ |