[译]软件开发中个人生产力的差异

原文 https://www.construx.com/10x-software-development/productivity-variations-among-software-developers-and-teams-the-origin-of-10x/

一些博客读者要求更多关于 “10x”名称由来的背景信息。这名称的主要是研究人员发现,具有相同经验的程序员或同一行业的不同团队之间,生产力和品质有10倍的差异。

软件开发中个人生产力的差异

Sackman, Erikson, and Grant (1968) 在 19世纪60年代末期的原始研究发现,个人的编程生产力有巨大差异。他们研究了平均有7年经验的程序员,最好与最差的程序员在初部编程时间的比例是 20:1;debug 时间的比例超过 25:1 ;程序大小比例是 5:1;程序执行时间是 10:1;他们发现程序员的经验与代码质量、生产力之间没有任何联系。

详细检查 Sackman, Erickson, and Grant 的实验会发现他们方法论的一些缺陷(包括将使用低级语言的程序员和高级语言的程序员的结果混在一起)。然而,即使考虑到这些缺陷,他们的数据仍然显示出最好的程序员与最坏的程序员之间的效率相差 10 倍。

自原始研究以来的这些年,得出普通的结论是“程序员之间存在数量级的差异”,并得到了很多专业的程序员证实。 (Curtis 1981, Mills 1983, DeMarco and Lister 1985, Curtis et al. 1986, Card 1987, Boehm and Papaccio 1988, Valett and McGarry 1989, Boehm et al 2000).

对程序员之间的巨大差异也有很多轶事支持。在20世纪80年代中期我在波音期间,有一个大约80名程序员参与的项目,(项目)有可能错过一个不能错过的截止日期。该项目对波音公司至关重要,因此他们将80名员工中的大多数人从该项目中移除,并带来了一个人,他完成所有编码并按时交付软件。我没有参与那个项​​目,我不认识那个人,所以我不能100%肯定这个故事是真的。但我是从我信任的人那里听到了这个故事,当时似乎真的是这样。

这种程度的差异不是软件行业独有。Norm Augustine 在一个研究中发现,在各种职业——写作,橄榄球,发明,警察工作和其他职业中——顶层的20%的人有能够50%的产出,产出可以是达阵,专利,解决的案例或者软件。当你想到这个时,这才有意义。我们都知道那些优秀的学生,杰出的运动员,杰出的艺术家,杰出的父母——这些差异是人类的经历的一部分;为什么我们会期待软件工程师会有所不同?

坏的一面,个体差异的极端

Augustine 的研究发现,由于有些人没有做出任何实际意义上的贡献(没有达到触地得分的四分卫,没有专利的发明人,不能结案的侦探等等),这些数据可能低估了生产力的实际变化。

但这在软件中似乎是正确的。在一些已发表的关于软件生产力的研究中,实验中大概有 10% 的受试者无法完成实验任务。在这些研究中,笔者写道:“因此那些实验对象的结果会被排出在我们数据集之外“。但现实生活中,如果某人“没有完成任务”,你就不能只是“将他们排出在数据之外”。你必须等待他们完成,分配其他人做他们的工作,等等。有趣(并让你恐惧)的是,软件开发那些 10% 中的人在他们项目实际上贡献是 负数 。 这与现实世界的经验很好地结合在一起。我想我们中的许多人都能想到那个,和他工作过的、符合这条描述的某君。

软件开发中的团队生产力变化

软件专家长期观察到,团队的成产力和个人生产力的差异一样多——都是一个数量级(Mills 1983.)部分原因是好的程序员更倾向于集中在一些组织,糟糕的程序员倾向于另一些组织,这一观察得到来自18个组织的166名程序的一项研究证实。(Demarco and Lister 1999)

在对七个相同项目的一项研究中,花费的努力比例是 3.4 :1 ,程序大小是 3:1 (Boehm, Gray, and Seewaldt 1984)。尽管生产力的范围很广,但在这项研究程序员们不是一个不同的群体。他们都是具有多年经验并且参加计算机科学研究生课程的专业程序员。有理由认为对不太同质的群体的研究会产生更大的差异。

一个对编程团队的早期研究表示,团队完成统一的项目的程序大小比率是 5:1,时间差异是 2.6:1 (Weinberg and Schulman 1974)

用超过20年的数据构建了 Cocomo II 评估模型回看,Barry Boehm 和其他的研究者得出的结论是,用团队中能力排15%的开发人员开发程序(效率)相当于排 90% 的 3.5 倍人月时间。如果一个团队在编程语言或应用领域或两者中都比另一个团队更有经验,那么差异会更大。

用一份特别的数据来指出成产力的不同,那就是 Lotus 123 版本和 Microsoft Excel 3.0。他们都在1989-1990 间完成的电子表格桌面程序。找到两家公司发布类似项目的数据的案例是很少见的,这让面对面比较(head-to-head comparison)特别有趣。在两个项目的结果如下,Excel 用了 50 个工作年的时间写了 649,000 行代码,而 Lotus 123 用了 260 个工作年的时候生产了 400,000 行代码。Excel 的团队每一个工作年产生大概 13,000 行代码,而 Lotus 团队每个工作年产生 1,500 行代码。这两个团队的生产力差异超过 8 倍,这数据支撑了不同个体及不同团队成产力有数量级差异,这一普遍主张。

你看到了什么?

您是否看到不同个体之间的能力差异为10; 1?不同的团队之间?你工作过的最好的程序员比最差的程序员好多少? 10:1甚至超过了范围吗? 我期待听到你的看法。

相关关联

Augustine, N. R. 1979. “Augustine’s Laws and Major System Development Programs.” Defense Systems Management Review: 50-76.

Boehm, Barry W., and Philip N. Papaccio. 1988. “Understanding and Controlling Software Costs.” IEEE Transactions on Software Engineering SE-14, no. 10 (October): 1462-77.

Boehm, Barry, et al, 2000. Software Cost Estimation with Cocomo II, Boston, Mass.: Addison Wesley, 2000.

Boehm, Barry W., T. E. Gray, and T. Seewaldt. 1984. “Prototyping Versus Specifying: A Multiproject Experiment.” IEEE Transactions on Software Engineering SE-10, no. 3 (May): 290-303. Also in Jones 1986b.

Card, David N. 1987. “A Software Technology Evaluation Program.” Information and Software Technology 29, no. 6 (July/August): 291-300.

Curtis, Bill. 1981. “Substantiating Programmer Variability.” Proceedings of the IEEE 69, no. 7: 846.

Curtis, Bill, et al. 1986. “Software Psychology: The Need for an Interdisciplinary Program.” Proceedings of the IEEE 74, no. 8: 1092-1106.

DeMarco, Tom, and Timothy Lister. 1985. “Programmer Performance and the Effects of the Workplace.” Proceedings of the 8th International Conference on Software Engineering. Washington, D.C.: IEEE Computer Society Press, 268-72.

DeMarco, Tom and Timothy Lister, 1999. Peopleware: Productive Projects and Teams, 2d Ed. New York: Dorset House, 1999.

Mills, Harlan D. 1983. Software Productivity. Boston, Mass.: Little, Brown.

Sackman, H., W.J. Erikson, and E. E. Grant. 1968. “Exploratory Experimental Studies Comparing Online and Offline Programming Performance.” Communications of the ACM 11, no. 1 (January): 3-11.

Valett, J., and F. E. McGarry. 1989. “A Summary of Software Measurement Experiences in the Software Engineering Laboratory.” Journal of Systems and Software 9, no. 2 (February): 137-48.

posted @ 2018-12-23 12:10  JOJO_2046  阅读(461)  评论(0编辑  收藏  举报