英文原文:The Benefits and Pitfalls of Pair Programming in the Workplace
结对编程是软件开发过程中所使用的一种技术,两名程序开发人员共享同一台工作站。其中一个扮演驾驶者(Driver)的角色,进行代码编写,另一个扮演观察员(Observer)或导航员(Navigator)的角色,对代码进行评测。他们可以轮流编写代码和测试案例,还可以坐在一起交流思想,解决问题,而不会想偷懒去刷手机。
结对编程的概念已经存在很长一段时间,已经有许多公司认同这种编程方式,但也有许多公司表示他们不考虑采用。结对编程需要花费的时间可能比个人编程更长,但产生的 bug 比个人编程少;它需要公司付出多一倍的人力,但编程的效率会比个人编程高。这是一个比较有争议的编程方式,不同公司的需求不同,对结对编程的看法就不一样。
国外有位开发者 Sam Harris 对结对编程的利弊做出了客观的总结分析,总结内容如下:
结对编程的好处
1、互相鼓励,不容易沮丧:团队工作能增加成员的工作积极性。因为在面对问题的时候,会有人一起分担,共同尝试新的策略。
2、互相监督,不容易偷懒:两个人一起工作需要互相配合,如果想偷懒去干别的,就会拖延工作进度。
3、互相学习编程技巧:在编程中,相互讨论,可以更快更有效地解决问题,互相请教对方,可以得到能力上的互补。
4、可以培养和训练新人:让资深开发者和新手一起工作,可以让新人更快上手。
5、多双眼睛,少点 bug:两人互相监督工作,可以增强代码和产品质量,并有效的减少 BUG。
结对编程的坏处
1、与合不来的人一起编程容易发生争执,不利于团队和谐。
2、经验丰富的老手可能会对新手产生不满的情绪。
3、一山不容二虎,开发者之间可能就某一问题发生分歧,产生矛盾,造成不必要的内耗。
4、开发人员可能会在工作时交谈一些与工作无关的事,分散注意力,造成效率低下。
等等......
因此,是否采用结对编程需要根据公司的情况进行定夺。并且,结对编程的时间需要合理安排,时间太长(8 小时及以上)容易产生疲劳,时间太短(低于 1 小时)都没进入工作状态。