去了医院一趟。偶然见到了结对工作的实例:收费窗口中,都是两个人一组,一个人把票价录入系统,另一个人在旁边盯着显示器,应该是防止另外一个人出错。这种需要细心,容易出错的工作有两个人一起进行Pair working应该是有效果的。
结对编程的一个重要目的也是通过一个人在旁边同步检查减少出错。但编程和收费毕竟是两码事,编程需要大量的创作,而收费是步骤固定的操作。步骤固定的操作出问题的可能性主要在于疏忽大意,其每一步操作是可以预期的,因此另一个人可以检查是否出错。而编程则不同,实现同一个目标,可以有不同的方法,因此两个人没有一个共同的操作步骤,因此一个人不容易判断另一个人是否正确操作,至少较难立即发现问题,对跨度较大的问题不容易发现,而这恰恰是往后修复成本高的问题。因此在防止错误方面上结对编程的有效性是有限制的。
另外,由于编程是创作性的劳动,很多情况下程序员需要集中精力思考,两个人是否会互相影响呢?在有分歧的时候必然有一人的方案得到执行,而另一个人只能顺着她的思路进行思考,有时候在思路不同的时候很难做到这点,这样发现错误的机会就小了很多。XP的一个理念是代码共同拥有权,即每行code的owner不是某个人,而是整个团队,这样的前提下让两个人一起考虑同一个问题有其基础,而现实工作中,每个工作划分往往是有owner的,非owner有自己的任务,对其他人的工作就不会一样熟悉。因此,这种情况下,编码后的review也许是更有效的手段。
但结对编程在如下方面很有效率:
1. 强化统一编程规范,让老员工和新员工搭配。这样可以帮助新员工尽快进入角色。这也可以看作一个学习方式。
2. 在共用模块的编写上,双方必须达成一致,对这部分的熟悉程度也一样。因此有条件也有需要结对编程。
除了以上的发现,还发现医院好像很挣钱,人们排着队大把大把地塞钱。当身体出现问题时就顾不得用身体挣来的钱了。收费员打开抽屉,里面钞票多多。有个想法闪现:为什么那么多抢匪想不开去抢银行呢?来这里收益不会少多少,风险那可是小多了,呵呵。
没有评论:
发表评论