结对编程(Pair Programming)的实践、衍生和变体
2020-01-03
来源:技术大V公众号
+新手
这是对团队成长帮助最大的一种搭配。
老手可以传授给新手很多经验性的东西,帮助他更快的熟悉系统和代码,从更高的层面去思考问题,更快的成长。
新手由于对系统并不那么熟悉,更可能从一些不一样的角度看问题,观点比较新颖,让老手重新思考一些本来已司空见惯的问题。
新手+新手
这是相对来讲产出随机性最大的一种搭配,视结对的具体个人而定。在不好的情况下,两个新手因为无人指引,可能走了弯路,浪费不少时间,而没有相应的产出。但在最好的情况下,两人主动性都较高,都初来乍到面临着需要尽快熟悉系统、了解团队流程的相似情况,很多问题是共有的。一个人解决了某个问题,也能帮到另一人,反而两人能互相帮助,熟悉团队文化和流程,更快融入团队。
结对编程的常用实践
结对对象的重新组合:
结对的程序员应每隔一段时间就改变结对对象,比如现在A和B结对,B和D结对,过一段时间后应该调整,让AD结对,BC结对。这样做一方面是让不同成员都有合作的机会,另一方面也是保持新鲜感、提高效率。更换结对对象后,在某种意义上改变了团队成员的环境,而人在一个新鲜的环境里往往比较兴奋,容易对刺激作出良性回应,效率高。
关于结对的程序员应多久改变其结对对象一次,不同团队有不同的做法,有的团队每隔几小时就改变,也有团队一两个月才变。笔者的观点是应根据任务而定,最好不要在任务执行中更换。如果是小任务的话,半天几个小时就能完成,那么完成后就改变结对对象也没有问题。并且小任务很多,每个小任务都可以和不同的人搭配,频繁更换。然而,如果是要用一两周或甚至超过一个月的大任务的话,在任务执行中更换,新换入或换出的人需要很多时间来了解现在进度和相应背景,会影响项目的推进。
部分实践结对编程:关键代码和新员工培训
关键代码:
一些团队由于种种原因,不想全面推行而是部分地实践结对编程,在这种情况下,很多时候他们将结对编程优先应用于较难解决的问题和比较重要的任务比如关键代码,而将较容易的任务单独完成。结对编程的最大优势之一在于保证代码质量,所以他们用这种方法优先保证核心代码没有问题,而对非核心代码的缺陷给予一定容忍度。
新员工培训:
另一个部分实践结对编程的常用场景就是新员工培训。有的开发团队在新员工入职之后,先让他跟不同的老员工分别结对编程,每个结对一个月,三个月后再让他独立编程。在这三个月里,新员工通过结对编程,熟悉了系统架构和团队的开发规范,快速地成长出独当一面的能力。这个也可以用在部门重组的情况下,比如部门重组,一半的团队成员从其他团队转移过来,不熟悉本团队的代码,让他们和原来本团队的成员结对编程也可以帮助他们快速融入。
远程结对编程:
一些团队想推行结对编程,但顾虑是团队分布在不同的地点。现在市面上有各种远程桌面共享和语音通信工具,可以在一定程度上克服这个问题。比如部分团队在北京,部分团队在广州,完全可以通过这些工具进行远程结对编程,没有问题。但对于一些时差相差太大的全球分布团队,比如一部分成员在加州湾区,另一部分成员在深圳,时差8小时,工作时段不一样,就较难解决了。只能让一部分成员把工作时间调到晚上,或是两个地点分别地进行结对编程。
成本迷思
很多团队在考虑是否使用结对编程时的一个最大顾虑就是是否会降低生产率。因
免责声明:
1、IT项目管理界发布的所有资讯与文章是出于为业界传递更多信息之目的,并不意味着赞同其观点或证实其描述。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请浏览者仅作参考,并请自行核实相关内容。
2、本站部分内容转载于其他网站和媒体,版权归原作者或原发布媒体所有。如文章涉及版权等问题,请联系本站,我们将在两个工作日内进行删除或修改处理。敬请谅解!
-
延伸阅读:
-