我们通常认为敏捷是一种较新的软件开发方法。它的成立宣言写在2001年,之后,像 Etsy 和 Uber 这样的“破坏者”采用敏捷从最底层开始构筑他们的业务。 但是我们错了。

敏捷——至少在精神上,如果没有名字的话,大概从计算机时代之初就已经被渐进式组织使用。仰望星空映入眼帘的是一个令人印象深刻的例子:1969年登月。

「你可以在几天时间内让一个新点子在模拟器里飞行。它在我的脑海里创建了一个事务如何进入理想化世界的范例。」

Don Eyles , 前美国宇航局( NASA ) 工程师

计算机科学家在阿波罗11号任务中使用的就是现在称之为敏捷的开发技术,其中包括迭代、时间框、跨职能团队以及对不断变化环境的快速适应。「我们是敏捷的,因为一开始我们在这个全新的领域就是个小团队,」 Don Eyles 说道,在还是美国宇航局的初级工程师和麻省理工学院合作登月舱载入计算机项目的时候,「我们没有官僚作风的阻碍。」

迭代我去月球

Eyles 说,在20世纪60年代阿波罗还在运行的时候,敏捷的出现自然而然地成为计算机科学家、工程师、项目经理和宇航员们合作去做没人做过的事情的信条。 「这是一个广阔的领域」他补充道「直觉和美学发挥了作用。」

一段在1989年阿波罗任务20周年纪念时的口述历史,美国宇航局工程师、项目经理和管理员们回忆了当时他们的工作情况。迭代和持续的、渐进式的开发让肯尼迪总统提出的激进式登月计划成为可能。

借鉴先前完成水星和双子星任务的经验,不同小组分别负责这项计划的不同部分,与全国各地的太空中心并行工作。团队里不乏刚毕业的新人和步入职业生涯中期的科学家,而决策团队被从队列推了下来。

“让不知道怎样去做这些事的人去发现该如何做事,”在口述历史中, Bill Tindall 说,负责规划双子星计划的人也是阿波罗计划的关键成员。“这就是他们所做的。”

现在回头去看, Eyles 记得当时团队成员会经常在会议里分享问题并寻求答案,无论成员的位置或等级如何。

即时编程

早期 Eyles 在一个配备了1.6千字节的1立方英尺大小的计算机上用汇编语言编程。在飞行中, 系统经受住了在登月舱下降过程中变得愈发明显的两个计算机故障,2004年 Eyles 这样给美国宇航学会描述。其中一个涉及到的故障出现在释放系统计算能力的雷达接口。另一个是控制油门算法中的坏数据。

他把这种弹性部分归因于他和宇航员——也就是用户直接工作时的反复测试。「我和几个不同的宇航员在模拟器模拟飞行着陆,」他说,包括阿波罗16的指挥官 John Young 。 Eyles 回忆起 Young 建议在一次模拟飞行后再把编写的软件合并到着陆技术。

「我认为我的工作是如何更好地协助飞行员,」 Eyles 说,「你可以在几天的行程中,让一个新点子能在模拟器里飞行。它在我的脑海里创建了一个事务如何进入理想化世界的范例。」

旧的教训回响依然

即使到现在,50多年的官僚作风建设之后, NASA 团队依然在使用这些早期的敏捷经验来在太空中更远地探险。在美国航天局喷气推动实验室建立的火星探测项目,深度依赖敏捷开发。地球上的科学家用来远程探索火星的一切,从移动应用到 Rover 控制器,再到可穿戴技术都包含敏捷组件。

这些准则最终使得美国航天局进入企业领域,但它用了几十年。公司主要采用连续、官僚式的开发模式,也就是瀑布流式开发,这意味着大型系统的建设可能需要好几年,并且可能是过时的一次完成。阿波罗团队在他们的方式有个名字之前就走出了闪耀的敏捷之路。「这些技术至今仍未在工业领域出现,」 Eyles 说道「我们是这一切能够发生的唯一地方。」

本文翻译自 Derek Korte 的文章 Did Agile Land a Man on the Moon ?

国内 ITOM 管理平台 OneAPM 致力于帮助企业用户提供全栈式的性能管理以及 IT 运维管理服务,通过一个探针就能够完成日志分析、安全防护、APM 基础组件监控、集成报警以及大数据分析等功能。想阅读更多优秀文章,请访问 OneAPM 官方技术博客