免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

  • 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:39821
用户头像

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

关注

评论

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

SAAS服务的特点

Geek_99967b

小程序 SaaS

一种直流电池/电源正反接均可供电的电路方案

不脱发的程序猿

电路设计 电源电路 嵌入式硬件 直流电池/电源正反接电路

一、KVM虚拟化的功能特性

穿过生命散发芬芳

kvm 5月月更

怎样为自己的小程序打包为App

Geek_99967b

小程序 小程序转app

Java 8 中的设计模式策略

HoneyMoose

沉浸式体验网易云信在线 KTV

网易云信

音视频技术

浅谈Http,Https

工程师日月

HTTP 5月月更

智能手表的机遇与挑战并存

Geek_99967b

数据安全 物联网, 智能手表

【网易云信】沉浸式体验网易云信在线 KTV

网易智企

音视频

读书笔记之怪诞行为学6:非凡的决定

宇宙之一粟

读书笔记 5月月更

中兴通讯加入龙蜥社区,共建ICT全场景开源生态

OpenAnolis小助手

开源 生态 龙蜥社区 CLA 中兴通讯

一文学完Linux Shell编程,比书都好懂

编程攻略

Linux

车联网的发展面临的难点怎样突破

Geek_99967b

小程序 车联网

Docker下RabbitMQ四部曲之二:细说RabbitMQ镜像制作

程序员欣宸

Java RabbitMQ 5月月更

OpenClusterManagement 开源之夏 2022 来了

阿里巴巴云原生

阿里云 云原生 开源之夏

微信朋友圈的高可用复杂度

joak

都是限制,都是秘密,JS逆向某建筑市场数据,python爬虫120例

梦想橡皮擦

5月月更

将微信小程序生成商用App很简单吗?

Geek_99967b

ide 小程序转app 小程序预览

AIRIOT物联网低代码平台如何配置Modbus TCP协议?

AIRIOT

低代码平台 驱动配置

Linux环境混合使用静态库与动态库

Loken

音视频 5月月更

JDK 15 以上版本的字符串块

HoneyMoose

《0次与10000次》:让坏事发生0次,让好事发生10000次

郭明

打造TOB企业流量场,钉钉将推出“视频号”,提升CDN性能是关键

郑州埃文科技

钉钉 CDN加速 IP地址 IP定位 网络优化

如何使用 Restful ABAP Programming 编程模型开发一个支持增删改查的 Fiori 应用

汪子熙

RESTful SAP abap Fiori 5月月更

HTML语法基本规范

恒山其若陋兮

5月月更

Java Core「6」反射与SPI机制

Samson

学习笔记 5月月更 Java core

LabVIEW控制Arduino LED灯闪烁(基础篇—2)

不脱发的程序猿

单片机 LabVIEW Arduino LED灯闪烁 LIAT

gitlab 8.13.6添加server hook后保护分支失效

阿呆

#GitLab gitlab hook 保护分支

LabVIEW和Arduino的巧妙结合(基础篇—1)

不脱发的程序猿

单片机 LabVIEW Arduino 上位机

跨平台应用开发进阶(十六) :uni-app实现H5页面唤醒APP

No Silver Bullet

uni-app App 5月月更 H5页面

实现内网穿透(二)

风斩断晚霞

Go websocket

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