65.9K
CodeProject 正在变化。 阅读更多。
Home

为什么 IT 真正需要一位 Archibald Cochrane

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.87/5 (4投票s)

2014年10月29日

CPOL

3分钟阅读

viewsIcon

8275

软件开发证据驱动方法的必要性

引言

软件开发有许多未解决的开放性问题:在任何给定情况下,哪种编程语言是最佳选择? 我应该使用面向对象的方法还是函数式方法? 编码标准是否能让软件更容易维护且成本更低?

大多数在 IT 领域工作过一段时间的人对这些以及许多其他问题都有直观的个人意见。 但是,如果我们需要证明这些意见的合理性,我们无法参考任何公正的“证据”来源,我认为这不利于我们专业的发展1

背景

1972 年,一位名叫 Archibald Cochrane 的医生出版了一本名为“有效性和效率:对健康服务的随机思考”的书。 在书中,他主张进行对照随机试验,以科学且无可辩驳地发现哪些方法在医学领域有效,哪些方法无效。

当时,医学界与今天的软件开发领域非常相似——程序主要基于该领域长期专家的意见,他们通过对初学者进行直接指导来传授他们的专业知识和先入之见。

这重要吗?

医学是一个比软件开发更重要的领域——它通常关系到生死存亡。 然而,这并不意味着软件开发太不重要,不能接受这种类型的流程。 软件开发是经济中一个非常庞大且不断增长的因素,并且正在成为安全关键系统的重要组成部分。

方法论

我们将无法为任何重大问题设置随机试验——公司不会在我们工作时为“实验”付费,并且开源社区有足够多的工作要做,可以免费创建出色的软件,而无需进行这项工作。 此外,任何此类工作都会受到公地悲剧的影响,因为每个人都会从这些知识中获益,无论他们是否为找到这些知识做出贡献。

幸运的是,有一种信息来源可以进行回顾性挖掘,为我们提供其中一些信息:各种开源代码存储库(GitHub、Codeplex、Google code 等)。

第一步:确定你的代理

由于我们无法直接提出诸如“Java 代码是否比 C# 更容易维护”之类的问题,我们需要确定一些可以提出的代理问题。 例如,您可以问“对于任何给定的项目,有多少在项目开始一个月后加入的开发人员在该项目开始一个月后仍在积极贡献代码?” 这并不完全等价,但可以用作我们潜在问题的代理。

第二步:记录你打算进行的分析

当我们提出上述问题时,期望得到一个答案是人之常情。 如果我们没有得到我们期望的答案,我们(大多数情况下)不会公开这一点也是人之常情。 因此,我们需要知道在实际执行分析之前打算执行什么分析,这样这些负面结果就不会丢失。

我们还需要所使用的方法是可重复的和开放的。

第三步:执行分析

大多数公共源代码存储库都是可搜索的,因此可以通过多次搜索来执行分析,并将结果整理成表格形式。

第四步:发布结果

数据需要为了共同利益而共享,并且需要以可搜索的方式进行共享。 幸运的是,这是我们在 IT 领域已经做得非常好的事情。

关注点

这个想法的种子是 Ben Goldacre、Tim HarfordHans Rosling 在教育和公共政策中使用随机试验方面所做的工作(和写作)。

历史

  • 2014-10-29 初始想法
© . All rights reserved.