我们团队从五一之后开始实行结对编程,至今两个月了,取得了明显效果的同时,也遇到很多问题。
先说说优点。
- 学习和上手的速度快
我们团队除了我之外有四个人,开始的时候其中只有一个勉强算是了解需求和系统结构的,还有一个新成员连.Net都没用过。实行结对之后,几乎没有使用额外的培训时间,一周之后就基本上可以参与到工作中了,无论是业务需求、系统构架、版本控制、内部API,用得到的地方基本上都掌握了。事后总结,之所以学的快的原因,一是用到的才去学,目的明确,学着有劲;二是有人带着,手把手的演示,比自己看书摸索快多了;三是边学边用,掌握的扎实。 - Bug明显减少、代码质量提高。
第一阶段(我一个人完成的):24个Bug;第二阶段(四人结对):12个Bug。考虑到我已经写了三年多的程序,而他们四个都才开始学不到一年(有一个还不到一个月),这个Bug率应该是非常让人满意的。另外在代码格式上,更工整和统一,毕竟是两个人写出来的。 - 团队凝聚力增强
这就是个感觉,成员之间亲近了不少。
再说说遇到的问题。
主要出在两个人之间的配合上,有的时候会有依赖心理,特别是两个人水平有差距、或者其中一个人对今天的工作不太了解的时候。还有的时候不适合结对,比如对一个新的技术点进行尝试和攻关的时候。
关于变更结对伙伴。
我们开始的时候实行每半天一换,后来发现思路切换的太过频繁,延长到一天一换。不过仍然发现思路中断是很难受的事情。所以现在不以时间为单位了,改成一个任务一换。
我们现在使用的结对方式。
- 结对以任务为单位,完成一个任务后变更结对伙伴。
- 结对前,每个人对要进行的任务独立思考,形成一个解决方案。
- 结对时,两人拿出各自的方案进行讨论,达成一致后,编写代码。
- 结对时,水平较低的应该主动积极,水平较高的应该以沟通和指导为主。
- 任务完成后,应及时总结,特别是对任务涉及系统模块进一步了解。