结对编程初识

在过去的几年里,我有过许多结对编程的经历。有时在我的团队里进行,有时在客户那里,有时在coding
dojo(一种编程模式,几个程序员一起合作完成一个任务),有时在我的开源项目里。对于那些知道如何结对编程的程序员来说,这种模式很棒,很高效。
但是你不能指望在两个程序员面前摆台电脑,就指望他们一开始就做得很棒。结对编程需要学习,程序员需要知道实施者(敲键盘的人)和领航员之间的区别。下面来看看些细节。

按照敏捷开发的要求,我们测试小组开始了第二个story。我领到了结对编程和跟着江霄一起完成关于.Net下对具体的项目代码写出测试Demo的task。

在结对编程的task中,主要又分为了概念性认识和具体推行两个子任务。这次主要还是单元测试理论性的一些基本认识吧。

在结对编程中,我遇到了一些误区,列在下面。

定义:

结对编程就是两位程序员坐在同一工作台前开发软件。也就是说,两位程序员来完同一个设计,一个作为领航者在后边说代码怎么写,另一个作为实施者写代码。

一、领航员误区

优势:

对项目:

(1)两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决
方案
。人多力量大,人多点子多。(可能会出现过度讨论,浪费时间;当然,也可能创新出更好的方案)

(2)如果程序员的经验积累足够,是很容易看出存在潜在问题的代码的,即表面上实现了功能,但实际上是一种糟糕的做法。

(3)两个有经验的程序员同时在一起工作,看起来好像浪费了一个人的时间:但实际上的效果确实完成了更高质量的代码,程序不那么容易出BUG。

(4)一定时期内打乱配对。好处:促进交流,融洽关系;每个人更熟悉具体模块和整体项目;不再为人员流失而过度困扰;不再维护繁杂文档。

对程序员:

(5)它可以促进参与项目的程序员自身水平的提高,一对程序员工作的时候,水平较低的一方会潜移默化地受水平略高的程序员影响,学到一些新的东西。而水平高的一方同样因为不断地把自己的想法说出来而整理了自己的思路。

(6)提高效率,尤其是遇到困难时,两个人回去积极解决,而不是有时候的走神、跑偏、私人聊天等。真心是压榨呀~

(7)更少的受到打断。人们更不愿意打断两个结对编程的人,而单独工作的人却容易被打断。

澳门新葡亰游戏网址,1. 发号施令者

劣势:

可能出现的问题:(1)、过度讨论,浪费时间;(2)、水平高低不齐,效率低下;(3)、想法过多,思路“跑偏”;(4)、领航者:过度关注细节;一意孤行,默不作声,心不在焉等;(5)、实施者:深藏不露;目中无人;不知所措;思维跳跃;工具不熟悉等。

喜欢发号施令的人总是对敲键盘的人说:“到末行,加个反括号,然后…”。他不去关注解决方法和下一步该怎么做,而过度关注一些编程细节。

要求:

水平差的不太远的程序员和自己配成一对;只用一台计算机;大家选一个人坐在键盘前面负责输入,另一个人坐在后面口述(会不会造成一个人不思考了?不会,因为一个人停顿的时候另一个人会主动的去继续思考;会不会一个人思路太快,另一个跟不上?不会,因为第一个人听不懂他就写不下去,会问)。

两个人要不断的交流,频率不应低于一分钟一次。整个的设计思想由后面只动口不动手的人主导,而由操键盘的人做实现。由于人的思维速度是快于输入代码的速度的。那么观看的人可以有空闲的时间做额外的思考,观察代码写的有没有问题,结构有没有问题。

可以两个人分时交替角色。

虽然编码通常比一个程序员单独工作更快地完成,但是总的程序时间(程序员数目×花费的时间)增加了。管理者需要在工作更快的完成以及缩减测试和调试时间和更高的编码成本之间平衡。对于那些程序员没有完全理解的任务上,程序员期待更多的创造性,挑战,以及高复杂度,此时使用结对编程最有帮助。在简单的,程序员都完全了解的任务上,结对编程导致生产力的净下降。

事实上,他希望他自己来掌控键盘。所以当你碰到一个喜欢发号施令的人,那么将键盘交给他吧,转换领航员的角色。

发展:

远程结对编程,就是共享桌面,拓展硬件、解决地域限制;但不利于协作,比如有延时键盘控制混乱等、乒乓结对编程,就是观察者和驾驶者(操作者)测试用例的编写和修改(了解即可)。

总结:对于结对编程还需要进一步的认识和探究,这里只是粗略的介绍。尤其是在项目中怎么推行和解决推行过程中的问题,才是这个课题的重中之重。

2. 拼写纠错者

拼写纠错者坐在你旁边,纠正你输入的每个错误字符。当然,他没有时间来真正的进行导航。

和纠错者商量一下,当他给你纠错的时候让他请你喝一杯咖啡(或者任何你想要的东西)。

3. 吹毛求疵者

吹毛求疵者会指责你写的每行代码。当他的意见正确时,他会一意孤行,不用你已经写好的代码,而完全照着他的想法。

就如自由爵士音乐人都是复用其他乐队成员的音符,来构造成一首曲子一样,好的结对编程也应基于现有的基础上进行推进。

试着转换角色,也许吹毛求疵者就会变成一个目中无人的人。

4. 默不作声者

默不作声者是那些几乎不发表意见的人。他仅仅坐在那里看着你工作。

试着问下他对你的方法有什么意见,或者问他下一步该写什么测试代码。

5. 心不在焉者

心不在焉的人企图让你分心,而不是提供给你有建设性的意见,帮你解决问题。

那么让他离开吧,比起一个让自己分心的人而言,不如一个人编程。

澳门新葡亰游戏网址 1

网站地图xml地图