结对编程的经济价值论

作者

<strong><a class="editorlink" href="http://www.infoq.com/cn/bycategory.action?authorName=Mike-Bria" class="editorlink">

Mike Bria

译者
<strong><a class="editorlink" href="http://www.infoq.com/cn/bycategory.action?authorName=%E9%87%91%E6%AF%85" class="editorlink">

金毅

    发布于
    2009年6月25日 上午7时1分
</h2>



“究竟为什么我们要使用两个人来同时做同一件事情呢?”这往往是初次听说结对编程
的人的第一反应。实际上,他们觉得结对编程使写代码的成本翻了一倍。Dave Nicollete用数字说话,告诉大家结对编程是如何省钱,而不是浪费钱的。



由于错误地认为编程主要就是打字,结对编程的经济价值论也就经常被误解。事实上,当然,大部分的编程其实就是在思考,结果往往会做出很多糟糕的决定,或者犯下很多的错误——这些错误最终还得由开发人员(以及他们的公司)买单。



这就是结对编程价值论建立的基础,也是它为什么难以量化的原因。 Dave Nicolette在他最近的一篇文章
中是这么概述的:

结对的价值主要体现在手把手纠正,从而把错误扼杀在萌芽中。手把手纠正涉及面小,而且能跟结对编程的工作流程无缝结合起来,通常
甚至都感觉不到,很自然…带来的价值就是能够很方便地进行检查,从而防止在未来某个时间不得不返工的情况出现…要想观测或者量化实施后的效果并不
简单,因为坏的结果从来没有发生过,你也就没法比较了。

所以,结对的价值体现在节约了未来的时间
,“时间就是金钱”。但是值多少钱呢
?还是在这篇文章中,Dave试着向大家阐述了几个观点来回答这个问题。

在最近的一次结对中,Dave一直记录着结对伙伴指出搭档错误以及关于设计方面的讨论的时间。然后,他们给出这些事情为将来省下了多少时间,再利用这些信息继续做进一步的计算:

在Alistair
Corkburn的早期著作中,他曾经计算过一个IT工作者的成本要每分钟2.1美元…在我们的结对过程中,我们进行了2次简短的关于设计的讨论,随
之做出了小的重构。根据我们的计算,这次重构为未来的维护工作节省出了4小时。这就意味着大约2.1 x 120 =
252.00美元。如果我们共发现了12个小错误,平均每个错误节约了30秒的调试时间,那么这就值.5 x 2.1 x 12 =
12.60美元。总共的话,我们为公司每90分钟省下了276.60美元,或者说一小时省下大概180.00美元。



某公司有个小 规模的IT部门,总共40个开发人员,分散在几个XP团队。我们假设开发人员每天结对5个小时,那么一共每周结对时间为20对 x
5小时 x 一周5天 =
500小时。假设每个结对每小时节省180美金,那么平均每周节约90000美元。如果全年都把节约率控制在这个水平线上下,那么团队一年工作50周(这
是美国,假期不长),公司就会因为开发团队的结对编程,一年节省450万美元。

450万
美金呢,对一个只有40个开发人员的公司呀。但Dave也不得不承认,这只是从一次结对编程中获取的初步计算,所以并没有科学性,但这仍然可以引发大家的思考。



你怎么看呢?