结对编程不是万灵的。因为它需要两个人不断的沟通,一起做决定,如果不能沟通或者做不了决定的话,结对编程就行不通了。
什么情况不能沟通?比如,小许为了赶工期,弄得非常紧张,但他的开发经理老包坚持让他去配合小王。这样小许就很不情愿的去跟小王搭档。他让小王把代码给他看看。尽管他觉得 DataAccesser 这个类很不合适,但他一心在想着他的项目截止日期。他说道:“哦!去掉这个类太花时间了。你简单把它改名成DBTable吧。”小王说:“不行!现在整个系统的结构全部集中在数据库上,再这样下去系统会崩掉的。我们一定要解决这个结构!老包让你过来帮我的……”之后,小王在写代码的时候,小许根本没认真看。他一点建议都没给。
上面这种情况,就是不能沟通的,因为小许不愿意跟小王结对编程。他们表面上是搭档的,事实上根本没有。他们没有共同的目标(比如,改进系统的结构)。如果人没有共同的目标,那他们就没有沟通的欲望。
这不是无法沟通的唯一原因。比如,如果一个搭档比较情绪化,不喜欢跟人交流,那就无法沟通了。当小王和小许在写testDeleteAll这个方法的时候,小王建议用“t”来代替“abc”作表名。如果小许这样回答:“abc就行了,我写了好几年的测试,都是用这种数据的。你懂什么?你才刚毕业好不好?我在编程的时候,你还在幼儿园呢。” 在交流的方式上,沟通可能也会有问题。如果一个搭档缺乏信心,他什么意见都不敢提。小王跟小许在一起写DBTable的时候,正确的情况下,小王问小许为什么要在写DBTable类之前写一个失败的测试。可是如果小王被小许的经验和能力震住了,一个问题也不敢提?那系统开发过程中,就得不到小王任何有意义的建议了。 缺乏自信只是不提意见的一个原因。另一个原因看起来就很傻了。当小王还给小许解释 DataAccesser 类里面的deleteAll方法中有关级联删除的代码时,如果小许觉得不懂这些代码是一件很蠢的事情,然后就不细看,也不提问题直接跳过去,那会怎么样?小许对系统了解就不够多,也就给不了重构的什么好建议了。
总之,这下面有一些觉见的问题,会造成结对编程无法正常工作:
不情愿的配合。
拒绝别人的意见,甚至攻击对方。
小心翼翼有意见不敢提。 怕别人觉得自己笨不敢问问题。
如果这些问题真的发生了呢?不过这个跟管理以及个人性格更有关系,最好的方式就是不让他们结对,或者让他们跟别的人结对。 (看到这边,你们可以尝试找个人跟你Pair了。)
 【责编:Youping】 |