此文是Making Software的一篇书评。写作者是Pierre-Antoine LaFayette。

还在回味 Oram 和 Wilson的 《代码之美》 时,我就非常期待他们下一部融合业界先行者们思想的新作。Wilson是我母校多伦多大学的计算机科学教授,对我的职业来说也是一个很棒的顾问。目前,他把主要时间投入到 Software Carpentry这个致力于传授科学家编程技能的组织。

  • TDD行吗?
  • Python比Java更好吗?
  • 优秀程序员真有10倍以上生产力吗?
  • 如何衡量编程效率?
  • 开源软件比闭源软件更好吗?
  • 设计模式经得起实践检验吗?

这些问题任何一个不经意间都会引发一场口水大战。有人是绝对正确吗?如何才能回答这些看似主观的问题?Making Software试图找到可靠的定性和定量的证据来回答。这些已不再是没有事实依据的论点,该适时应用科学的方法来面对这些问题,收集一些确凿的证据并公平的做出推断了。

2009年,ThoughtWorks的Martin Fowler做了"三年Ruby实践"的讲座,展示了他的公司曾在此期间的41个Ruby 项目成果。他调查了程序员对使用Ruby进行工作的感受。这些结果表明,在他的公司应用Ruby是成功的。这是迷人的现实世界研究,Making Software的作者想看到更多这样的例子。

许多软件开发公司内部都收集他们的成功和失败的证据,希望找到神奇公式来快速开发高质量的软件。很少有公司愿意向公众公布这些信息。这也是为什么我们没有足够的软件开发实例研究的原因之一。不过,近年来,更多的此类研究信息已不再封闭,有很多高质量的研究都可以参考。

书中我最爱的章节是Steve McConnell的“10倍效率意味什么?程序员的生产力测量变奏曲”。McConnell,作为非常成功的 《代码大全》和其他流传甚广的作品比如 《快速软件开发》和《软件估算——“黑匣子”揭秘》 的作者为众人所熟知。McConnell在这篇文章中提供了大量证据表明,“量级”的编程效率的差异不是传闻,是一个可证明的假设。以我在EA的经历来看,生产力的差异是确定无疑的,有很多经验丰富的人搞定任务的速度远超过我。不过,我想在这个特例中对代码基的熟悉程度是一个重要因素。更有趣的研究是开发团队在新项目工作的工作状况,这多少算是公平的竞争环境。我觉得这是一个非常热门的话题,这样的研究可能揭示出精英程序员的生产力秘密。现今,这是我等凡人都渴望知道的信息。

这本书的迷人之处在于,它试图以处理人类学问题的方式对待在软件开发中的问题。作者挑选这些程序员喜欢争论的问题,并给出有意义的证据,让大家进一步的辩论。无论读者是否是10倍速超级程序员, 阅读Making Software感觉都不错。

最低限度: 当然,我会推荐此书给我的朋友。

Pierre-Antoine LaFayette 写于 Toronto, Ontario, Canada 2011.02.13

本文参加 Translate Geeks to Chinese 翻译活动