607
社区成员
在本学期的结对编程中,对于我原来所作出的回答,变得更加深有体会了,结对编程能够顺利进行的前提是需要双方有着一定的能力作为基础,也许你代码编写速度快,逻辑性强,也许我思维抽象性强,对架构的设计感更好,从每个人的强项来看,确实自己的优势和对方相比十分悬殊,但二者起到了一定的优势互补,反而能够将两个人的短板进行弥补。然而,假若一方什么都强,或者另一方什么都弱,这在结对中不仅弱势的一方有一种使不上力的感觉,强势一方也会将任务担在自己身上,两个人都不好受;即使强势的一方将任务分给弱势的一方,由于二者水平的差距,甚至可能让双方的对接产生问题,最后的结果就是重构,这种现象已经出现了。
如果差距较大, 还有 ’即时培训‘ 的意义。 请看图:
Alice 和 Bob 在结对编程。 他们有各自不同的 comfort zone (非常熟练), learning zone (学习区),panic zone (恐慌区,问题太难了): 不同的组合对双方的收获:
课程中的结对编程本质上对我们来说是一种尝试。尝试两人水平不相当的结对编程有何不可?虽说我在结对编程没有进行这种尝试,但我觉得不管结果如何,这种特别的尝试经验十分可贵。尝试的结果也许是一人编程一人旁观,然后水平高的一方直接把水平低的一方拉进黑名单;也许是菜鸟积极学习,寻找互补之处,努力跟上大佬的步伐,大佬也在教导中有所收获。总之,这种尝试并不会被否认,因为结果有好有坏,而这其中的关键是两人在面对这种局面时的想法和行动,是寻找突破口,还是破罐子破摔。
结对编程的一个重要作用就是由老手带领新手迅速熟悉开发环境,新手可以得到及时反馈,从而快速融入到新环境中。
在团队项目阶段,我们组内在冲刺阶段和Debug阶段时用到了结对编程的方法。Debug时,每个人都会基于自己的理解提出可能的解决方案,类似于进行头脑风暴,对于最后解决问题也是有启发意义的。
虽然大多数时候是几个小时过去了,结对成员依然在不断尝试……