写点什么

To the Moon: 太空任务与开发软件的相似之处

  • 2015-12-07
  • 本文字数:2616 字

    阅读完需:约 9 分钟

Russ Olsen 在 GOTO Berlin 2015 会议上发表了题为“To the Moon”的开幕式演讲,在演讲中他介绍了太空任务与开发软件的相似之处。

InfoQ 对 Russ Olsen 进行了采访,主要关于为了满足期限在同一时间进行所有事情的弊端、从错误的和正确的事情中吸取经验教训、在软件开发中再渺小的事情也能扼杀你和当实施复杂工作时如何专注和处理细节。

InfoQ:您演讲的大部分形式都是第一次登月故事。您为什么选择用这种形式组织您的演讲?

Olsen:你知道的,人们习惯使用短语“改变一切”。但是他们谈论的很难改变什么,更何况改变一切。那个周日的下午,当我们登上月球后它真的改变了一切,至少对我而言是这样的。突然我有了人生的方向,我知道我长大后希望成为什么。并且我不是孤军奋战:我见到了很多从那天开始发生转变的人。我尝试了很久,希望帮助那些不够幸运没有经历登月事件的人们感受那种体验,但是唯一起作用的是让他们与我一起重温那一时刻,惊心动魄的时刻。因此,才有了这次演讲。

重要通知:接下来 InfoQ 将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注 InfoQ 微信公众号第一时间阅读精品内容。

InfoQ:在太空任务中,为了满足最后期限人们在同一时间进行所有的事情。这种情况在软件开发中存在吗?您认为这是否有效?

Olsen:NASA 在阿波罗计划中面临的情况是他们需要在一个疯狂的截止日期前完成一个几乎不可能的项目。因为时间线不允许他们“在第一步的基础上建立第二步”,最终他们简单地列出了所有需要发生的事情,一次进行所有的事情,最终整合它们。这种做事的效率及其的低下:你不可避免地会遇到人们构建的组件不能很好地一起工作。你让人们不断地解决同样的问题,因为他们没有意识到其他人也在解决这个问题。并且当整体设计发生变化的时候,你会有大量的返工。

阿波罗疯狂方式最明显的标志是阿波罗母舰后面巨大的火箭引擎。火箭引擎最初是设计用来推动母舰离开月球表面。但是随着项目整体设计落实后,他们有了一个独立的、专门的登陆飞船。所以母舰不需要着落——或者升空离开——月球。这意味着母舰不需要一个巨大的火箭引擎。但是设计的时候他们已经考虑了这个引擎,并且很容易做到扔掉它。

可悲的是,人们在软件开发中过度使用“先构建后集成”技术。显然我不是唯一一个:在演讲中我开玩笑说这种着手构建系统的方式“永远是一个好主意”。人们——尤其是开发者——总是哈哈大笑。那为什么开发者有时还是采用这种方法呢?原因跟 NASA 那帮人是一样的——不可能完成的目标和疯狂的截止日期。这么说吧:如果你正在管理一个软件项目,你设置了不可能完成的目标和疯狂的截止日期,取决于你的团队他们可能会圆满完成。或许不会,但是可能。但是无论成功还是失败,不可能的目标和疯狂的截止日期将会浪费你的精力、使团队疲倦、导致蹩脚的设计,和一百种不同的方式。

InfoQ:您能举例说明在太空任务中,人们如何从错误的事情中吸取经验教训?在软件开发中您有看到类似的学习模式吗?

Olsen:通常你能在航空航天中看到不间断的、系统的失败研究,不仅是实际的,还包括潜在的。如果飞机或者宇宙飞船中的某个零件发生故障,通常会有一系列系统的提问。不仅仅是“这个零件为什么会发生故障?”还包括“为什么早期我们没有发现这个故障?”和“其它交通工具中这个故障发生的比例是多高?”更不用说“这个故障是更一般故障的案例吗?”同时不仅仅是彻底的故障:航空航天工程师们一直在寻找异常现象,比如即使是发生直接损伤也不应该发生的故障。重要的是,航空航天工程师们面对故障时倾向于数据驱动和统计方法。

如今情况得到了好转,但是传统的开发人员仍然将失败看成是随机的从天而降的闪电:也许日志服务发生了故障,所以我们修复了问题,并忘了这件事。或者更糟糕的是,我们将软件缺陷看成是相关开发人员道德缺陷的证据:“你怎么可以让这种事情发生!!”是一种对软件故障可以理解的反应,但不是一个有用的反应。同样我们往往也会忽略异常行为:如果它不发生故障,就不进行修复。除非虽然你的系统没有发生故障,但是它引起了你的注意,试图告诉你它即将发生故障。

你可以将软件系统看成是由许多零件组成的复杂机器。事实证明收集系统的实际数据——包括故障和“有趣”的事件——基于收集的数据建立对系统的理解是我们应该一直考虑的事情。

InfoQ:您认为从成功和运转良好的事情中吸取经验教训如何?您对此看法是什么,它是否已经在软件行业中得到了充分的体现?

Olsen:我在软件行业中看到的一次又一次的主旋律是,我们过分推广我们在成功项目中学到的经验教训。在进行项目前,我们有着明确很好理解的目标、积极合作的客户、扎实的技术、灵活的思维和良好的设计文档,因此我们认为,“嘿,这个项目成功是因为我们有着良好的设计文档!”或者,“我们每天与客户交流一个小时,这是成功的原因。”或者,“我们充分理解需求,”这是灵丹妙药!问题是,为了构建复杂系统需要正确完成上百万的事情。如果你成功了,那么很好,尝试找出成功的根本原因。但是请注意,原因肯定不止一个。

InfoQ:您提到在太空中,再小的事情也可能会杀死你。这在软件开发中也是如此吗?

Olsen:软件开发是在所有尺度上把事情做对。清楚地获得正确的软件系统的整体设计是至关重要的。但是缺乏有效的执行力,好的设计也不会给你带来好的结果。同样好的执行力但是充满了 bug 同样也不会让任何一个人感到快乐。任何软件系统都会被许多“次要”的 bug 破坏。

InfoQ:对于进行复杂工作时如何使自己专注您有没有什么建议?您是如何处理这种细节的?

Olsen:在演讲中我试图表达的观点是当你构建某种复杂度类似登月火箭或者一个中度大小的企业信息系统时,肯定会有失败。我再说一遍:肯定会有失败。软件开发者终日试图得到正确的细节,花费整晚和周末寻求新方法以确保细节实际上是正确的。但如果我们在过去半个世纪的编程中学到了什么,那就是你可以降低缺陷率,但是你不能将其降低为零。因此我们需要让我们系统、组织和自己做好准备接受即将发生的失败,并准备好解决失败。正确的态度是尽你所能,确保功能、服务和系统是可靠的。然后当它失败时继续你的工作。US 太空计划的名言“失败不是一种选择”,其实,名言完全错误。当涉及到大型软件系统时,必然会发生失败。唯一的问题是,当失败时你和你的系统是否做好了准备。

InfoQ 将会报道 12 月 3 日和 4 日举行的 GOTO Berlin 会议。

查看英文原文: To the Moon:Parallels Between Space Missions and Developing Software

2015-12-07 18:001573
用户头像

发布了 92 篇内容, 共 30.1 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

Python 基础知识入门(三)

漫步桔田

451个PyPI包通过安装Chrome扩展窃取加密信息

墨菲安全

供应链安全 投毒

Python基础知识入门(四)

漫步桔田

活动报名:Tapdata Cloud V3 最新功能全解与核心应用场景演示

tapdata

【2.17-2.24】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

公众号接入 chatGPT 教程(附源码)

攻城狮杰森

Python AI openai ChatGPT

5分钟入门物联网大数据计算——实践类

阿里云AIoT

阿里云 物联网 IoT

技术科普|模糊测试背后的2个核心逻辑

云起无垠

模糊测试

ChatGPT对于普通人有什么机会和影响?

引迈信息

人工智能 AI AIGC ChatGPT

ChatGPT模拟MySQL数据库 | 社区征文

NineData

MySQL 数据库 编程 技术栈 ChatGPT

手把手教你如何快速检测设备异常——实践类

阿里云AIoT

阿里云 物联网 IoT

设备掉线怎么办?数据分析让冰冷的设备“开口说话”——实践类

阿里云AIoT

阿里云 物联网 IoT

LED屏逐点校正指南

Dylan

像素 LED显示屏 全彩LED显示屏

热点面试题:为什么 0.1+ 0.2 != 0.3,如何让其相等?

Immerse

JavaScript 面试 大前端 前端面试题 超全前端面试题

【kafka】常用命令汇总

石臻臻的杂货铺

kafka

会声会影2023终极版下载安装教程

茶色酒

会声会影2023

瓴羊Quick BI智能报表,让报表化复杂为简单!

巷子

3DMAX中的7个基本建模小窍门

Finovy Cloud

blender 3ds Max Cinema 4D

Python基础知识入门(二)

漫步桔田

开源面对面:浅谈数据库技术与人工智能的结合与实践

阿里云数据库开源

postgresql 阿里云 PolarDB for PostgreSQL ChatGPT 数据库技术

不被同事骂的代码规范,程序员们值得拥有!

程序员小毕

Java 程序员 程序人生 架构师 代码

技术分享| anyRTC回声消除算法进化

anyRTC开发者

人工智能 音视频 回声消除 语音通话 视频通话

极光笔记 | 埋点体系建设与实施方法论

极光GPTBots-极光推送

精细化运营 数据埋点 用户运营

父母、离别

毛广斌

生活

Teradata在华落幕,国产化崛起,袋鼠云数栈会是更好的选择吗?

袋鼠云数栈

可观测性最佳实践|阿里云事件总线 EventBridge 最佳实践

观测云

可观测性 云服务 可观测 观测云 可观测性用观测云

DawnSql快速入门

陈飞

微服务 分布式数据库 实时数仓

企业经常需要进行传输文件,大文件传输有哪些方法?

镭速

吞吐量最高提升400%!百度智能云联合NVIDIA完成首批17个自动驾驶模型优化

科技热闻

Tapdata Connector 实用指南:实时数仓场景之数据实时同步至 ClickHouse

tapdata

数据库 实时数仓

To the Moon:太空任务与开发软件的相似之处_语言 & 开发_Ben Linders_InfoQ精选文章