写点什么

“实效主义”是一匹“黑马” —— 现实驱动开发

  • 2008-03-04
  • 本文字数:1095 字

    阅读完需:约 4 分钟

软件架构师 Gustavo Duarte 的一些观点最近引起了热烈的讨论。针对物理学家 Richard Feynman 关于挑战者号航天飞机失事报告以及其中的一些发现,他提出了一些观点,并讨论了它们与工程级质量软件的关系。Gustavo 将 Feynma 的原则应用于软件领域,并提出四个主要观点:

  • 软件工程的好坏和它与管理的关系是正相关的;
  • 大量的事先设计非常“愚蠢”;
  • 软件与其他工程上的法则有很多共同之处;
  • 可靠的系统是通过严格的测试、以“确保最高质量的态度”采取自底向上增量式工程化开发得到的。

在后续的一篇文章中,Gustavo 详细阐述了“实证”的概念, 并引入了“现实驱动开发(Reality Driven Development)”这一想法:

行动和尝试是经验主义的基石。不要试图让现实屈从于广泛的分析和丰富的文档,因为现实是通过试验得来的。某个以经验主义为指导方针的公司不会苦苦执着于市场研究,而是雇佣实习生用一个夏天的时间开发出一个产品。而不以经验主义为依据的公司会组织 43 个人用了一年的时间进行计划和设计却没有付之实施

从进化角度来看,这一概念奉行“适者生存”的哲学。实质上,你尝试一些东西,然后取其精华去其糟粕。Gustavo 解释到:

好的软件开发过程应该完善那些尝试,从现实结果中得到反馈。这就是我想通过“现实驱动的开发”所表达的意思。而对于软件来说,最重要的现实就是用户体验和技术质量(technical quality),而主要的试验就是写代码和软件。这并不是一个非常正式的模型(呵呵),我只是喜欢用它来代表软件开发。我喜欢“现实驱动”这个词,因为当你提到“现实”时,人们会想到“用户”。

该想法与敏捷共享一些共同的核心原则和技术,而 Gustavo 并没有提倡某种新方法论(感谢上帝):

现实驱动开发没有什么特定的方法论,它与敏捷原则有很多共通的想法(当然敏捷原则会影响这些想法),但魔鬼存在于细节之中。我喜欢将软件工程想象为工具箱,其中充满了我们根据正确的形势要选择的技术。“完善那些尝试”的过程工具包括迭代开发可执行的架构(executable architecture), 持续集成,以及单元测试

Gustavo 的方法更偏爱用户和质量:

基于这一模型,我们在意的就是以下两个现实:用户体验(包括软件实用性)和技术质量。而在敏捷和类似瀑布这样的方法中,用户体验常常被忽视[译者注:敏捷方法是强调用户体验的]。

Gustavo 用自低向上的方法总结到:

  1. 更注重试验而不是分析,尽管二者都很重要;
  2. 完善试验:尽可能让这些试验更容易、更快、更便宜、更广泛。分析可以帮助我们这一点;
  3. 更多的尝试;
  4. 必须聪明和主动地度量现实:即用户体验和技术质量;
  5. 对反馈做出反应,让现实来驱动。

查看英文原文: Pragmatic is the new black - Reality Driven Development

2008-03-04 20:391073
用户头像

发布了 100 篇内容, 共 24.2 次阅读, 收获喜欢 5 次。

关注

评论

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

数字货币钱包系统软件开发详情(源码)

如何支撑企业快速构建数字孪生体

华为云开发者联盟

数据分析 IoT 工业物联网 数字孪生 华为云IoT数据分析

2021云栖大会 | 传统行业如何上链?旺链科技与你面对面畅聊!

旺链科技

区块链 云栖大会

一场穿越千年的智能矿山“梦游记”

白洞计划

Python代码阅读(第40篇):通过两个列表生成字典

Felix

Python 编程 Code Programing 阅读代码

华为云GaussDB深耕数字化下半场,持续打造数据库根技术

华为云数据库小助手

GaussDB 大会 GaussDB(for openGauss) 华为云数据库

021云原生之Kubernetes 部署

穿过生命散发芬芳

云原生 10月月更

揭开“视频超分”黑科技的神秘面纱

拍乐云Pano

音视频 RTC 视频算法 视频超分

mysql binlog日志信息查看

梁小航航

MySQL Binlog

Android技术分享| 超简单,给 Android WebRTC增加美颜滤镜功能

anyRTC开发者

android 音视频 WebRTC 移动开发 美颜滤镜

新思科技网络安全研究中心发现Nagios XI存在漏洞

InfoQ_434670063458

数字钱包软件系统开发介绍(源码)

RPAaaS是什么?为何能够推进RPA人人可用?

王吉伟频道

云计算 RPA SaaS 机器人流程自动化 RPAaaS

高效动画实现原理-Jetpack Compose 初探索

vivo互联网技术

动画 Google 框架 移动开发 Andriod

AI 在视频领域运用—弹幕穿人

百度Geek说

AI 后端 弹幕 视频

官方线索|CCF CED中国工程师文化日

轻口味

1024我在现场

数字货币钱包软件系统开发简介(案例)

想要面试大数据工作的50道必看题

华为云开发者联盟

大数据 hadoop hdfs 数据分析 关系型数据库

运营型CRM系统(运营型客户关系管理)只是针对于运营的吗?

低代码小观

企业 企业管理 CRM 管理系统 运营型CRM

Sentinel-Go 源码系列(一)|开篇

捉虫大师

sentinel Go 语言

现成C2C场外交易源码系统开发

【LeetCode】最长公共前缀Java题解

Albert

算法 LeetCode 10月月更

“技术·探索”技术作家英雄会带你开启不一样的1024!

博文视点Broadview

虚拟币钱包软件系统开发(搭建)

【高热FAQ】关于智慧康养物联网加速器 ,你想知道的都在这

华为云开发者联盟

物联网 硬件开发 智慧康养 华为云物联网平台 SaaS应用

C2C交易软件系统开发(源码)

优化技术专题-性能优化系列-针对Java对象压缩及序列化技术的探索之路

码界西柚

序列化协议 序列化机制 10月月更

16个实用JavaScript代码片段:DOM、Cookie、数组、对象

devpoint

JavaScript DOM Cookie Object 10月月更

数字资产钱包系统开发源码搭建

实用 | 利用 aardio 配合 Python 快速开发桌面应用

星安果

Python 软件 工具 aardio 桌面开发

保姆级带你深入阅读NAS-BERT

华为云开发者联盟

推理 预训练模型 BERT NAS论文 NAS搜索

“实效主义”是一匹“黑马” —— 现实驱动开发_研发效能_Gavin Terrill_InfoQ精选文章