写点什么

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

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

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

关注

评论

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

Python代码阅读(第3篇):列表的最小公倍数

Felix

Python 编程 Code Programing 阅读代码

测试开发之系统篇-按需创建测试虚拟机

禅道项目管理

虚拟机 自动化测试 测试开发

团队对质量负责,“我”可以不负责?

BY林子

敏捷测试 责任流程模型

一文带你认识LPWA通信技术

华为云开发者联盟

物联网 通信 NB-IoT LPWA SigFox

在 Dubbo3.0 上服务治理的实践

阿里巴巴中间件

云计算 Serverless 云原生 dubbo 中间件

netty系列之:netty架构概述

程序那些事

Java Netty nio 程序那些事

oeasy教您玩转vim - 3 - # 打开文件

o

架构实战营 学习总结

👈

架构实战营

基于香港云服务器的解决方案可以增强金融服务公司在降低成本的同时降低风险

九河云安全

十大排序算法--归并排序

Ayue、

排序算法 8月日更

kafka日志写入logstash

Rubble

Logstash Kafk 8月日更

Nginx的常用功能总结

程序员阿杜

Java nginx 8月日更

云计算重塑生命科学行业,北鲲云加速生物制药企业转型

北鲲云

针对于香港服务器快速威胁检测是加强安全的关键

九河云安全

大佬分享开发经验!2021年华为Android面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

手撸二叉树之平衡二叉树

HelloWorld杰少

数据结构与算法 8月日更

秒杀系统设计

Vincent

架构训练营

oeasy教您玩转vim - 2 - # 使用帮助

o

vim

手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

Regan Yue

redis Linux windows 8月日更

沙场秋点兵——MySQL容器化性能测试对比

焱融科技

MySQL 云计算 容器 高性能 分布式存储

iOS官方瘦身方案ODR(一):初见On-Demand Resources

LabLawliet

ios 独立开发者 优化技巧 Apple Developer 8月日更

互联网寒冬!大厂Android开发面试解答

欢喜学安卓

android 程序员 面试 移动开发

Vue进阶(七):走近 package.json

No Silver Bullet

Vue npm 8月日更

跟我学AI建模:分子动力学仿真模拟之DeepMD-kit框架

华为云开发者联盟

AI 仿真 分子动力学 分子 建模

Zilliz 陈室余:音视频相似性检索的技术实现丨ECUG Meetup 回顾

七牛云

AI 音视频 ECUG 七牛云

架构实战营 毕业设计

👈

架构实战营

oeasy教您玩转vim - 3 - # 打开文件

o

中国大学 MOOC Android 性能优化:冷启动优化总结

有道技术团队

大前端 安卓 网易有道

为什么将网络虚拟化与实现服务器虚拟化不同?

九河云安全

聊聊Go语言中的数组与切片

架构精进之路

8月日更

YYDS!浪潮云蝉联中国政务云服务运营市场占有率第一

云计算

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