﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Software Development Culture-随笔分类-敏捷开发方法</title><link>http://www.blogjava.net/moxie/category/7653.html</link><description>将软件文化进行到底</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 02:41:51 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 02:41:51 GMT</pubDate><ttl>60</ttl><item><title>Pair Programming (结对编程)</title><link>http://www.blogjava.net/moxie/archive/2006/09/14/69714.html</link><dc:creator>moxie</dc:creator><author>moxie</author><pubDate>Thu, 14 Sep 2006 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/moxie/archive/2006/09/14/69714.html</guid><wfw:comment>http://www.blogjava.net/moxie/comments/69714.html</wfw:comment><comments>http://www.blogjava.net/moxie/archive/2006/09/14/69714.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/moxie/comments/commentRss/69714.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/moxie/services/trackbacks/69714.html</trackback:ping><description><![CDATA[
		<p style="margin: 12pt 0in 3pt;">
				<span style="font-family: 宋体;" lang="ZH-CN">（本文发表于《程序员杂志》第九期,略有删改）</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 0pt;">
				<o:p> </o:p>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%; text-align: right;" align="right">
				<span style=""> </span>
				<span style="font-family: 宋体;" lang="ZH-CN">作者：钱安川（</span>Moxie<span style="font-family: 宋体;" lang="ZH-CN">）</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%; text-align: right;" align="right">Email:qiananchuan@gmail.com</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">我们</span>Pair</i>
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">做任何一件事情。</span>
						<o:p>
						</o:p>
				</i>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="">                                            </span>
				<i style="">
						<span style=""> </span>
				</i>
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">——</span>ThoughtWorks</i>
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">西安</span>Office<o:p></o:p></i>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<i style="">
						<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
								<v:stroke joinstyle="miter">
								</v:stroke>
								<v:formulas>
										<v:f eqn="if lineDrawn pixelLineWidth 0">
										</v:f>
										<v:f eqn="sum @0 1 0">
										</v:f>
										<v:f eqn="sum 0 0 @1">
										</v:f>
										<v:f eqn="prod @2 1 2">
										</v:f>
										<v:f eqn="prod @3 21600 pixelWidth">
										</v:f>
										<v:f eqn="prod @3 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @0 0 1">
										</v:f>
										<v:f eqn="prod @6 1 2">
										</v:f>
										<v:f eqn="prod @7 21600 pixelWidth">
										</v:f>
										<v:f eqn="sum @8 21600 0">
										</v:f>
										<v:f eqn="prod @7 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @10 21600 0">
										</v:f>
								</v:formulas>
								<v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f">
								</v:path>
								<o:lock aspectratio="t" v:ext="edit">
								</o:lock>
						</v:shapetype>
						<v:shape id="_x0000_i1025" style="width: 187.5pt; height: 157.5pt;" type="#_x0000_t75">
								<v:imagedata o:title="pairprogrammers" src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.gif">
								</v:imagedata>
						</v:shape>
						<img alt="pair.gif" src="http://www.blogjava.net/images/blogjava_net/moxie/pair.gif" border="0" height="210" width="250" />
				</i>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">我的第一次</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">（</span>Pair Programming<span style="font-family: 宋体;" lang="ZH-CN">的简称，即结对编程。后面都是用</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">代替）是在</span>ThoughtWorks<span style="font-family: 宋体;" lang="ZH-CN">公司面试进行的。那次，他们来自英国的项目经理</span>Andy<span style="font-family: 宋体;" lang="ZH-CN">面试我，和我一起进行</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">。</span>Andy<span style="font-family: 宋体;" lang="ZH-CN">问我以前是否</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">过，我说：“没有，这是我第一次</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">”。随即他就告诉我：“</span>It’s very fun.<span style="font-family: 宋体;" lang="ZH-CN">（它非常有趣）。”</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">就这样，开始了我的第一次</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">，也是加入</span>TW<span style="font-family: 宋体;" lang="ZH-CN">最重要的一轮面试。其实，刚开始很不习惯，我那可怜的英语口语，陌生的测试优先开发（</span>TDD Test Driven Development<span style="">  </span><span style="font-family: 宋体;" lang="ZH-CN">一种软件开发方式，先写单元测试代码，再写业务代码。我以前也写过很多单元测试，但从没有测试优先）。当我看到需求文档时，大脑几乎是一片空白，不知从何处下手。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">但面试总不能就这样放弃吧。我又仔细看了一遍文档，尝试着写了几段业务代码。做在我旁边的</span>Andy<span style="font-family: 宋体;" lang="ZH-CN">摇了摇头，从我手里拿了键盘。他说应该这样做，先写测试代码。于是他一边和我解释业务需求，一边写测试代码。并提醒我，如何去对一个复杂的功能进行分解，并且小步伐的前进。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">在</span>Andy<span style="font-family: 宋体;" lang="ZH-CN">的引导下，我慢慢的进入了角色。充分理解业务之后，也就清楚了该如何写业务代码。我从</span>Andy<span style="font-family: 宋体;" lang="ZH-CN">那里要了键盘，又写了几段代码。然后运行单元测试，绿色状态，测试成功。</span>Andy<span style="font-family: 宋体;" lang="ZH-CN">微笑的向我竖起了大拇指。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">受到鼓励的我，这是已完全放松进入状态。我们又试着完成了几个功能。这时，我们已经不只觉的渡过了</span>2.5<span style="font-family: 宋体;" lang="ZH-CN">个小时。</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">确实是一件非常有趣的事。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">进入</span>ThoughtWorks<span style="font-family: 宋体;" lang="ZH-CN">公司之后，发现在大家不仅</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">编程，还</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">研究技术，</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">撰写文章，</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">翻译，等等。只要是</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">能完成的工作，我们就不一个人完成。甚至在生活中也出现了很多</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的影子。在我们的西安</span>Office<span style="font-family: 宋体;" lang="ZH-CN">里流传这样一句话：“我们</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">做任何一件事情”。两个人</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">，可以一起一起分享工作乐趣，一起承担工作压力。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">这些天的</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">生活，让我深深体会到了</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的优点。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<b style="">
						<span style="font-family: 宋体;" lang="ZH-CN">一、</span>Pair</b>
				<b style="">
						<span style="font-family: 宋体;" lang="ZH-CN">可以最大化的提高工作效率。</span>
				</b>
				<span style="font-family: 宋体;" lang="ZH-CN">软件开发并不只是程序员堆砌代码的过程，它更多的是一个创新的过程，是一个发现问题、分析问题、解决问题的过程。一个人编程时，往往有了一丝零碎的想法就开始编写代码。写完代码之后，忽然发现这个方案行不通，只好废弃这些代码，重新开始新的想法。当一个人在遇到疑难问题时，很容易走入“死角”。而</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">则不同，一个人有了想法，首先要表达出来，让自己的同伴理解，经过深刻的讨论，一致认可之后才开始编写代码。一个人编写代码，另一个则在旁边思考，会为下一步的工作提出建设性的意见。发现了问题可以及时的指正。大大的提高了代码质量。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">一个人一天有效工作时间不超过</span>3<span style="font-family: 宋体;" lang="ZH-CN">－</span>4<span style="font-family: 宋体;" lang="ZH-CN">个小时。两个人一起</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">。一个人编写代码，另一个人则从设计的角度思考下一步的工作，有了想法之后，互相讨论，再互换角色。在开发过程中，设计思考和编码实现不停的进行交换，保持了良好的开发节奏。同时可以互相督促，使彼此更加认真的工作。遇到问题和压力时，可以一起面对，互相鼓励。可以一起分享解决问题的成就和乐趣。</span><b style=""><o:p></o:p></b></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<b style="">
						<span style="font-family: 宋体;" lang="ZH-CN">二、</span>Pair</b>
				<b style="">
						<span style="font-family: 宋体;" lang="ZH-CN">是知识传播的最好途径。</span>
				</b>
				<span style="font-family: 宋体;" lang="ZH-CN">很多软件公司都建立有自己的知识库，有的还建立自己的培训部门，甚至高薪聘请一些专家做技术培训。但发现效果并不理想。培训之后，开发人员面临实际的项目，还是一片茫然。而与有经验的同事一起</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">则是在实际项目中学习，具有非常强的针对性。你学到的不仅是一些技术和技巧，更多是他们思考问题方式、解决问题的方法。和各种不同经验的同事一起</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">，你的经验和能力可以得到快速的提高。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">在</span>ThoughtWorks<span style="font-family: 宋体;" lang="ZH-CN">公司，如果你要加入一个项目，完全不用担心它使用的技术和涉及的业务。只要你有一定的基础，和有经验的同事一起</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">能让你很快熟悉和掌握它们。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<b style="">
						<span style="font-family: 宋体;" lang="ZH-CN">三、</span>Pair</b>
				<b style="">
						<span style="font-family: 宋体;" lang="ZH-CN">可以打造出最佳的合作团队。</span>
				</b>
				<span style="font-family: 宋体;" lang="ZH-CN">团队是有组织有计划的，合理有效地利用各种资源，进行最佳的组合。</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">并不是一对固定的伙伴，我们鼓励在团队中经常交换</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">伙伴。这时我们发现，项目不再是一个人的事情，也不是两个人的事情，而是整个团队的事情。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">通过</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">，大家可以在最短的时间内完成磨合。</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">很好的促进了团队的沟通交流，经常一起合作</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的伙伴，彼此了解、熟悉，很多都是工作和生活上的好友。在这样的团队里，大家很乐意互相协助，一起分享知识，分享快乐。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style=""> </span>
				<span style="font-family: 宋体;" lang="ZH-CN">在听过我们一番热情洋溢的阐述之后，某些项目管理者会点头并且认可</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">带来的力量。但，我们也听到了一些拒绝</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的声音。下面是我们听到的拒绝</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的最主要的理由，当然也包括了我们的辩解。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">一、</span>
				</i>
				<span lang="ZH-CN">
				</span>
				<i style="">Pair</i>
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">浪费资源。</span>
				</i>
				<span style="font-family: 宋体;" lang="ZH-CN">以前是一个人完成的工作，而现在却是由两个人一起完成。一个人在写程序，而另一个却在旁边观望。为开发人员支付报酬的老板是多么心疼那些白花花的银子。</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style=""> </span>
				<span style="font-family: 宋体;" lang="ZH-CN">可是，作为老板的你可曾做过统计过，每天加班工作</span>12<span style="font-family: 宋体;" lang="ZH-CN">小时，满脸疲惫的开发人员到底为你创造了多少的价值？在这漫长的</span>12<span style="font-family: 宋体;" lang="ZH-CN">小时中，能高效工作的时间又能有多少呢？一个开发人员每天编写几百行的代码，可是真正具有实效性的代码又有多少呢？</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style=""> </span>
				<span style="font-family: 宋体;" lang="ZH-CN">软件的本质就是很难用一种标准去衡量它的进度和实效性。开发人员能力的高与低、经验的多与少、工作的主动与被动，对软件开发的成本有非常大的影响。前期糟糕的代码，在后期修正，是需要付出几倍甚至更多的代价。在软件的行业里，人月和代码行永远是神话。</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">在</span>1999<span style="font-family: 宋体;" lang="ZH-CN">年，犹他州立大学（</span>University of Utah<span style="font-family: 宋体;" lang="ZH-CN">）做了一项试验。</span>.<span style="font-family: 宋体;" lang="ZH-CN">两组学生，一组独自工作（一共</span>13<span style="font-family: 宋体;" lang="ZH-CN">人），一组</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">（一共</span>28<span style="font-family: 宋体;" lang="ZH-CN">人，即</span>14<span style="font-family: 宋体;" lang="ZH-CN">对）。他们完成相同的任务（由助教预先设计和开发了测试案例）。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">下面的表格（图－</span>1<span style="font-family: 宋体;" lang="ZH-CN">）是完成相同的四个程序，独自工作和</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">工作使测试案例成功通过的百分比。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<img alt="test cases passed.png" src="http://www.blogjava.net/images/blogjava_net/moxie/test%20cases%20passed.png" border="0" height="202" width="664" />
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">（图－</span>1<span style="font-family: 宋体;" lang="ZH-CN">）</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">下面的柱状图（图－</span>2<span style="font-family: 宋体;" lang="ZH-CN">）则是完成相同的程序，两组所花费的时间比。虽然</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的学生在刚开始的阶段比独自工作的学生花在同样任务的时间较多，但很快</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的学生的时间开始大幅度的下降。而独立工作的学生需要花费比</span>Pairs<span style="font-family: 宋体;" lang="ZH-CN">更多的时间来达到接近的代码质量。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<img alt="elapsed time.png" src="http://www.blogjava.net/images/blogjava_net/moxie/elapsed%20time.png" border="0" height="597" width="973" />
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">（图－</span>2<span style="font-family: 宋体;" lang="ZH-CN">）</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">而且，在具体项目中。</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">会带来比上面结果更高的价值。一、在实际开发中，如果错误越多，就要花费越多的时间去修复它。在我们的试验中，没有统计修复错误所花费的时间。二、从图－</span>1<span style="font-family: 宋体;" lang="ZH-CN">可以看出，</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">在产生高质量代码时，也即意味着对需求的准确理解。个人团队对需求理解偏差比较大，后期也要花费更大的代价来纠正。三、从图－</span>2<span style="font-family: 宋体;" lang="ZH-CN">可以看到，</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的团队开发能力提高很快，这是潜在的价值。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">在比较试验之后的问卷调查之后发现：</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt 0.8in; text-indent: -0.25in; line-height: 150%;">
				<span style="font-family: Wingdings;">
						<span style="">ü<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      </span></span>
				</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">能用较少的时间生产更高质量的代码。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt 0.8in; text-indent: -0.25in; line-height: 150%;">
				<span style="font-family: Wingdings;">
						<span style="">ü<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      </span></span>
				</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的学生们认为自己比一个人的时候更勤奋和更聪明的工作，因为不想让自己的</span>partner<span style="font-family: 宋体;" lang="ZH-CN">失望。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt 0.8in; text-indent: -0.25in; line-height: 150%;">
				<span style="font-family: Wingdings;">
						<span style="">ü<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      </span></span>
				</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的学生认为自己比一个人的时候更专著</span>,<span style="font-family: 宋体;" lang="ZH-CN">紧凑和由纪律的工作，而且是持续的。而独立工作的学生也可以专著和紧凑的工作，但往往不持续。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt 0.8in; text-indent: -0.25in; line-height: 150%;">
				<span style="font-family: Wingdings;">
						<span style="">ü<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      </span></span>
				</span>
				<span style="font-family: 宋体;" lang="ZH-CN">在紧张时间安排和繁重的工作压力下，独自工作的学生很容易蜕变为没有纪律的程序员。</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style=""> </span>
				<span style="font-family: 宋体;" lang="ZH-CN">同时，在</span>ThoughtWorks<span style="font-family: 宋体;" lang="ZH-CN">这样的咨询公司，每个开发者都是能够独挡一面。</span>ThoughtWorks<span style="font-family: 宋体;" lang="ZH-CN">的开发者，在一般的软件公司都是类似项目经理或架构师的角色。你可以想象公司肯定要为他们提供不翡的待遇。可是，他们却</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">做任何一件事情，也从不认为自己是在浪费资源。相反，</span>ThoughtWorks<span style="font-family: 宋体;" lang="ZH-CN">从实践中得出：</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">能够充分的利用每个开发者，让他们发挥最大的价值。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<i style="">
						<span style=""> </span>
				</i>
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">二、人手不够。</span>
				</i>
				<span style="font-family: 宋体;" lang="ZH-CN">也许，在你的公司，昨天又有一个老员工递交了辞职申请。老板看着一张张新的面孔，很无奈的摇了摇头。招聘员工并不困难。但如何让新员工快速进入角色，掌握公司的技术和业务呢？</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; line-height: 150%;">
				<span style="">    </span>
				<span style="font-family: 宋体;" lang="ZH-CN">人员的流动一直是让很多软件公司非常困扰的问题。特别是老员工的离去，也就意味着公司多年的技术和业务积累的流失。</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">而在</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">工作的团队中，几乎不用担心这个问题。</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">可以快速的进行知识传递，通过</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">和</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">伙伴的交换，知识不再是掌握在一个人的手中，而是整个团队一起共享。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">在</span>ThoughtWorks<span style="font-family: 宋体;" lang="ZH-CN">内部，工作的调整和变换是非常频繁的。但很少会对项目造成影响。相反，这样的变换却加快了知识的传递。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<o:p> </o:p>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">三、开发者不能很好的合作，</span>Pair</i>
				<i style="">
						<span style="font-family: 宋体;" lang="ZH-CN">对开发者要求太高。</span>
				</i>
				<span style="font-family: 宋体;" lang="ZH-CN">真的要求很高吗？看看求职简历，不是每个开发者都口口声称自己具有很好的团队合作精神吗？如果你不能很好的和别人</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">，团队精神又从何谈起呢？</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">那任何两个人都可以搭配进行</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">吗？</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">不，</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">对开发者是有要求的。它要求开发者乐意和别人沟通、合作，要求开发者能够彼此尊重，愿意和别人分享自己的知识。这不正是我们一直倡导的团队合作精神嘛！</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">Pair<span style="font-family: 宋体;" lang="ZH-CN">的搭配是一个有趣的问题。有人说，最好的搭配就是两个人能力相当。其实不然，</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">应该是一种多样的变换组合。在</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的团队中，经验丰富的开发者有责任带领新人，传知授道解惑，同时可以享受传道的乐趣。新人，更应主动找有经验的伙伴</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">，快速学习提高自己。</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的核心就是沟通，只要两个人能很好的进行沟通，那么他们就可以很好的搭配。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">关于</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的实施，其实并不困难。我们需要的只是经验，当然经验也只会来源于实践。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">
		</p>
		<p class="MsoNormal" style="margin-bottom: 6pt; text-indent: 0.3in; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">最后，我要说的是：我在</span>ThoughtWorks<span style="font-family: 宋体;" lang="ZH-CN">中国，有幸多次和传说中的美女天才程序员一起</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">，其中的感觉也就不用多说了，呵呵。</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; line-height: 150%;">
				<o:p> </o:p>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">参考资料：</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; line-height: 150%;">
				<a href="http://www.pairprogramming.com/">http://www.pairprogramming.com/</a>
				<span style="font-family: 宋体;" lang="ZH-CN">这是一个专门介绍和研究</span>Pair<span style="font-family: 宋体;" lang="ZH-CN">的一个网站</span></p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; line-height: 150%;">
				<span style="font-family: 宋体;" lang="ZH-CN">联系作者：</span>
		</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">Email:qiananchuan@gmail.com</p>
		<p class="MsoNormal" style="margin: 0in 0in 6pt; text-indent: 0.3in; line-height: 150%;">http://moxie.blogdriver.com/moxie/index.html</p>
<img src ="http://www.blogjava.net/moxie/aggbug/69714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/moxie/" target="_blank">moxie</a> 2006-09-14 17:53 <a href="http://www.blogjava.net/moxie/archive/2006/09/14/69714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>