InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

结对编程的经济价值论

作者 Mike Bria 译者 金毅 发布于 2009年6月25日

领域
架构 & 设计,
过程 & 实践,
语言 & 开发
主题
Java ,
质量交付 ,
Ruby ,
消除浪费 ,
敏捷 ,
.NET
标签
结对编程
“究竟为什么我们要使用两个人来同时做同一件事情呢?”这往往是初次听说结对编程的人的第一反应。实际上,他们觉得结对编程使写代码的成本翻了一倍。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也不得不承认,这只是从一次结对编程中获取的初步计算,所以并没有科学性,但这仍然可以引发大家的思考。

你怎么看呢?

查看英文原文:A Dollar Value On Pair Programming

译者 金毅 多年来服务于欧美软件外包行业从事管理工作,对软件工程、方法学等在外包业的运用和CMMI实施略有感悟。

楼主你 发表人 Huang Hideto 发表于
结对编程想法不错 发表人 Li Qiang 发表于
Re: 结对编程想法不错 发表人 张 晓庆 发表于
Re: 结对编程想法不错 发表人 im Kevin 发表于
Re: 结对编程想法不错 发表人 熊 小 发表于
Re: 结对编程想法不错 发表人 G. Conan 发表于
一个程序员的联想 发表人 yan lix 发表于
量化? 发表人 陈 鹏 发表于
  1. 返回顶部

    楼主你

    发表人 Huang Hideto

    扯的我蛋疼

  2. 返回顶部

    结对编程想法不错

    发表人 Li Qiang

    结对编程是一种理想化的想法,它只适合两个人水平相当、知识结构存在互补的情况。设想一下,假如是师徒结对编程,师傅肯定会受制于徒弟的各种低级错误中,影响师傅的工作进度。又或者是两个水平差异较大的程序员结对,同样有这样的麻烦。
    还有一个最重要的问题,在于结对编程要求开放性。很多程序员在长期工作中形成的经验与教训,并不愿意与其它人共享。试想,如果在技术上有保留,还怎么结对?怎么结好对?

  3. 返回顶部

    Re: 结对编程想法不错

    发表人 张 晓庆

    引用作者的一个回复:
    Fred,

    Have you ever tried pair programming yourself?

    I myself made similar arguments of logic years ago prior to actually ever really understanding (well, experiencing) pairing.

    The reality is that when a team adopts pair programming and applies it with respect and a shared understanding of purpose and etiquette, in most healthy environments, literally none the suspicions you mention turn out to be true at all.

    As Dave implies, the value is not easy to justify quantitatively or logically (although I still do make an attempt here), you just need to see it work for yourself to really understand.

    Cheers
    MB

  4. 返回顶部

    Re: 结对编程想法不错

    发表人 im Kevin

    说得很对,结对编程并不是没有条件的。中国的很多程序员非常高傲,喜欢显摆,你让另外一个人坐在他旁边,纠正他的代码设计过程,他就算嘴上不说,心理肯定也一百个不爽,结对编程的意义就无法体现出来了。

  5. 返回顶部

    Re: 结对编程想法不错

    发表人 熊 小

    结对的确需要条件,但是如果我们都停留在口头上觉得不行,不去实际尝试,恐怕说不出来哪些是必要的前提吧?就我所知的范围内,只要是尝试过结对的开发人员,没有不喜欢的。。

  6. 返回顶部

    一个程序员的联想

    发表人 yan lix

    2.1 * 60 * 8 * 22 * 12 = 266112 ?

    i'm just wondering

  7. 返回顶部

    Re: 结对编程想法不错

    发表人 G. Conan

    哈哈,有同感!

  8. 返回顶部

    量化?

    发表人 陈 鹏

    这莫精细的量化是有点扯

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。