熟悉极限编程的人都知道,在极限编程的十二项实践中,有一个非常重要的实践是结对编程,也是两个人坐在同一台电脑前面,使用相同的键盘和鼠标来开发同样的一个模块,一个负责代码的键入,另外一个人负责盯紧可能出现的错误,包括低级错误和方向性的错误。而且,当一个问题对其中一个人难以解决而恰好是另外一个人的强项的时候,那么角色会发生转换。

但是,由于某些原因,我一直无法实践结对编程,尽管在平时有意的在自己的工作中实现极限编程中的一些实践,但是一个人对于结对编程这项实践是无法进行了。(除非我会分身术,要么只能是精神分裂了)。

然而,偶然的一个机会,我体会到了结对工作的好处。那天是一个同事接到了一个任务,要设计一下公司内部的网络,并且要画出网络拓扑图。他对于网络的配置和安装是非常熟悉的,所以很快开始画表格,画图,开始了工作。而我当时恰好没什么事情可做,所以搬了一把椅子,坐在他的旁边。

在我不自觉之间,我们实践了结对工作。我们先是对网络的部署有一个简单的讨论,确定了所有的计算机应该处于的网段,由于采用了子网掩码255.255.255.192,这是一个我们从前没有用过的,所以在他画表格的时候,我帮他计算了一下我们的IP地址至少要在多少以后,算出来的结果是后一个数字要大于192。

接下来我们商量着确定了公司的计算机包括服务器的数目,这样,他可以确定表格的行数。并很快填写了序号好计算机的使用者。而且填写了必要的一些信息。IP分配的问题很快完成了。由于我们不停的在交流,避免了很多拼写的错误,也没有遗漏任何一台计算机,一切都进展的非常顺利。

然后需要画一副图来表示网络中的设备的分布,开始的时候他打算使用excel中的绘图工具来完成,但是众所周知,Office本身带的绘图功能在画一些专业的图的时候是不够的,所以我推荐他使用插入对象的方式来加入Visio的图像。

他考虑了一下,同意了我的看法,于是我们切换到Visio下面,开始绘制网络拓扑图。

但是我们很快发现,在Visio中画好的图有一个问题,文字由于采用的圆滑边角的操作而显得不是很清楚,于是他决定采用画好图之后在Excel里面来手动添加文字。

图很快画好了,他开始添加矩形框,并将其背景色和边框线都设为无色,然后在其中添加必要的说明文字。

时间已经过了差不多一个小时了,他有些累,工作的效率也有些降低,我提议剩下的一点儿工作由我来替他完成,他同意了,两分钟之后,所有的工作完成了。

接下来我们又一起检查了一下,没有什么遗漏和错误的地方。于是我们的工作完成了。

由上面我们可以看出,其实结对这个方式不仅仅可以应用在编程的过程中的,在平时的一些工作中都可以采用。我想大家一定用过这种方式,想想从前在大学的宿舍里面,打游戏或者打牌的时候总是会在身边有一个参谋,那样不也是结对的方式吗?哈哈。

结对的确是一种非常有效的方式,如果利用得当,不仅能够通过优势互补提高我们的工作效率,而且还可以减少错误。重要的一点,这种方式非常有利于大家的共同提高,这对于一个团队来说不能不说是一种非常好的结果。