Pair Programming:1+1>2

  进入ThoughtWorks之后,开发工作一直是在pair(结对编程)下进行。对于我这样从未有过pair经验的人,突然转变到pair下工作,其中的感触特多。(以后要养成好习惯,要在最有感触的时候把事情记录下来,嘿嘿。)

  写这篇文章之前,google了一下业界对于pair的看法。不小心就搜到了公司同事钱安川在两年之前写的文章:结对编程 。通读全篇之后,发现其中对于结对编程的一些误解,在我没有经历过pair之前也同样有。希望通过此篇文章帮助更多的开发人员认识到,pair其实很美好,即使你有很多担忧以及顾虑,也不妨一试。

  个人认为,pair最大的几点好处在于。

  1. Knowledge Transfer/Share

  进公司之后做的项目是一个ROR的项目。Ruby和Rails对于我来说都是陌生的,压力颇大但激情更大。幸运的是,团队里面有经验丰富的老外同事和gigix,郑晔等人。以下事实说明通过pair传递知识的速度非常的快。

  a. 项目移到北京office的时候,已经在美国完成了一个release,北京office的成员对于项目一无所知。刚开始由gigix和郑晔跟两个美国同 事pair,两个礼拜下来,他们两位基本上对项目有了很好的了解。反映在他们已经可以跟我这样的新手pair来共同完成一些story了。

  b. 我加入到pair行列之后,跟这些有经验的同事们一起pair,通过观察和讨论,迅速地掌握了很多Ruby和Rails的知识,也对项目的业务流程,框架 等有了快速的了解。注意,时间仅仅是一个多礼拜!回想在原来公司的时候,如果进入一个已经在运行的项目,一个礼拜才刚看了些文档吧。

  c. 在pair的过程中,不仅仅是知识和经验的传递,有时候更多的是,思维方式和工作方法的学习。这几天经过和同事们pair,通过观察和参与,学习到了很多不一样的思考问题和解决问题的方式。

  2. 提高工作效率

  很多没有经历过pair的人都会说,让两个人一起做一件事情,不是浪费资源么?其实在我没有经历过pair之前,也有同样的想法。但在真正经历过pair 之后,我彻底改变了这种想法。并且,曾有一次在跟一个在安永工作的同学聊起他们的工作的时候,我竟然不由自主地推荐她使用pair的工作方式。她听了之 后,竟然也表现了相当的认同。我会在后面提及原因。(他们可不是IT公司)

  首先不管pair是否真的会浪费人力,时间和财力。我个人最大的感受,就是在pair的时候,我的思维集中度是工作以来最高的。一个人工作的时候,总会时 不时发一会儿呆或者想想其他事情,或者上网看看新闻。但pair之后,你就没有这样的机会了。而且,会因为不想让partner失望,你会表现得更加出色 和努力。

  关于pair和individual之间工作产出的区别,我并没有做过统计和比较。但是,犹他州立大学(University of Utah)在1999年做的一项试验 ,其中的数据已经有了很好的证明。

  3. 锻炼与他人一起工作的能力

  pair并没有对什么人可以或者不可以一起pair有规定,而是鼓励任何人之间都要去pair,无论是水平相当或者是经验悬殊的。鼓励pair,其实也是鼓励沟通,鼓励去除障碍。即使有些人不善沟通,在经历pair之后,我相信,他们也会变得乐于交流。

  pair的工作方式,其实本身就是一种很好的培养团队精神的方法:合作,交流,沟通,分享,互助,等等。

  4. 碰撞出火花

  pair需要讨论。一个人独立思考,往往会陷入误区。而如果两个人一起讨论,往往会碰撞出一些火花。

  讨论,是个很奇妙的东西。即使真的不能碰撞出火花,也是一个让自己重新思考的机会。讨论中的思考和个人独自的思考,产生的效果是完全不一样的。讨论中的思 考,往往会帮助自己认识到独自思考时的很多误区。我在想,这可能是因为讨论中需要更加开放的心态,以及观察事物角度的改变,让一个人有了新想法。

  5. 代码质量保证

  pair是个很好很方便,也很节省时间的代码质量检验的过程。之前公司用的是code review的方法,与之相比,pair中的质量检验具有:实时,交流以及及时修正等好处。

  同时,pair比code review更节省时间,更有效率。

--------------------------------------------------------------------------------------------------------------

  之前谈到推荐安永的朋友使用pair工作方式,也是因为质量原因。在安永这种审计公司,是不容许出错的。所以,对于很多数据报表,要反复审查有没有出错 (而且他们经常是自己审查自己,很容易进入误区)。而对于复杂的数据报表,刚开始不出错是不可能的。所以,一旦出错,就需要花费很多的时间去修正。

  而如果用了pair的方法,首先可以帮助他们减少反复审查的次数。两个人做一件事情,永远都会有一个人充当监督员的工作。相当于边做边审查,而且,由他人 来审查,因为不同的思考角度,会让审查更有效。其次,如果一旦出错,监督员基本上都会发现,特别是一些明显的错误。在这时,就可以及时修正。

--------------------------------------------------------------------------------------------------------------

  最后要说的是,钱安川的结对编程 这篇文章更系统以及更全面,希望了解结对编程的人,可以去看他的文章 。但我作为一个新手的感想,或许可以对很多希望尝试结对编程,但还有顾虑的人,一些鼓励。  

猜你喜欢

转载自andyhu1007.iteye.com/blog/198458