软件开发的过程

  • Kurt Christensen
  • 郑柯

2008 年 8 月 20 日

话题:敏捷文化 & 方法

“射箭高手的秘密诅咒”一文中,纽约时报专栏作家 Katie Thomas 描述了一种奇怪的痛苦情绪,它广为人知,人们称之为“目标恐慌”。当世界顶尖的射箭高手向目标发出一箭时,这种情绪会导致他们失去控制能力,如此现象让人费解。人们通常认为这是一种心理问题,新的研究表明:“目标恐慌”实际上是神经失调的表现。

为了理解这些以前无法解释的痛苦,神经病学家开始探究大脑深处存在的处理方式。比如最近《纽约客》发表了一篇文章,其中 Atul Gawandem 博士描述了对于“四肢疼痛幻觉”的全新治疗方法。“四肢疼痛幻觉”是指,接受截肢手术的人会感受剧烈疼痛,不过这些疼痛出现在已被截去的手臂或腿部之上。医生将接受截肢的人放在多面镜子之前,这会让患者产生四肢健全的幻觉。接下来医生会让患者完成多种任务,比如指挥不存在的交响乐团。来自 Walter Reed 医院的全新研究显示,这种“镜箱治疗法”可以有效去除“四肢疼痛幻觉”症状。令人惊讶的是,为大脑提供一系列全新的、出其意表的感官输入,这会让大脑改变内部的处理流程。

当然,在人工智能领域之内,使用数据改变处理这些数据的算法,这并无特别之处。此种“学习算法”的应用非常广泛,涵盖了从语音识别到信用卡欺诈检测等很多领域。实际上,随着处理海量数据能力的增强,似乎学习算法接受的数据要比算法本身还重要。在 2008 创业学校上的演讲中,Peter Norvig 比较了五种可以自我调整的算法在表现上的差异,这些算法是用来处理自然语言的。结果表明:选择更好的算法所带来的表现提升,远不如让它们处理更多数据带来的提升更明显。

可是这种方式能够用来跟软件开发的过程做类比么?在《人类赖以生存的隐喻》一书中,George Lakoff 和 Mark Johnson 讲述了隐喻塑造我们理解世界的方式,以及隐喻揭示与混淆我们身边世界的方式。对于大脑、软件,以及软件开发,唯一的隐喻就是:机器——也就是硬件。可是在这两个例子中,如果能将处理过程看做软件——也就是可编程的,也许能取得更好的进展;虽然易于出错,但是也易于修复。如果软件是软件开发的隐喻,那么软件开发的流程创建和提炼的方式,应该与软件创建和提炼的方式相同;小窥一下,处理软件开发流程,只需构建需要的部分,而且总是通过迭代和测试驱动的方式。

大家都已经习惯于事先明确定义最佳流程,要想抛弃这种观念,也许有点让人胆战心惊,可是现实告诉我们:要想为一组特定的人制订软件开发的流程,不应事先进行流程的明确定义,而应将精力放在流程的演进上;这也是与人类大脑和软件本身最一致的方式。

查看英文原文:Programming Processes

敏捷文化 & 方法