想必大家对敏捷开发中的结对编程都有所了解,可在公司试用推广时却很容易遭到大多数同事的反对,反对理由如下:1.长期的习惯导致在有个人在旁边监督你编写代码时很别扭;
2.敏捷的结对编程要求两个程序员最好能力水平相当?这个不好界定吧,另外每个人都有每个人的编码习惯,大家也知道,做为程序员的我们往往比较固执,也比较爱布道,所以很容易产生各种实时冲突,影响开发效率;
3.也许两个人会聊其他话题哦,比如这款智能机怎样,那游戏怎么样,哈哈,这种情况应该比较少吧。
其实我认为可以引入一种结对编程的变种,并不是严格按照敏捷概念的那种结对。而是对大范围的一个结对,比如说一个产品(在我们公司常常就有一个人开发一个产品的情况),一个子系统,一个核心功能的结对,不是针对编码的结对,恰恰,编码要分开!我觉得这种结对的精髓就是,对核心功能的设计两个人都去参与研究和设计,然后综合二人的方案提交给部门一个评审方案,因为一个人研究一个核心功能难免会有思维局限,要么就是陷入误区后无法很快找到熟悉此功能的人一起探讨。而结对编程在某种程度上规避了此种风险的发生,子系统的设计开发和产品的设计开发同理。注意,有一点,编码上一定要严格分开,两人不能有功能和代码上的交叉重叠。代码完成后,代码评审也在两人间进行。
我觉得采用以上结对编程,相比传统的敏捷结对编程有以下几个好处:
1.没人监视编程了,很舒服,自主;
2.水平不相当也没关系,把简单功能分给水平稍低的;
3.功能的分解由两个人同时写代码完成肯定比只有一个人写代码快;
4.质量?没关系,有代码评审呢;
5.冲突,至少实时的冲突没有了,两个人可以在代码评审时互相学习,集中解决冲突。