写点什么

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

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

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

关注

评论

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

谈 C++17 里的 Builder 模式

hedzr

c++ 设计模式

模块二作业

TIEDPAG

架构实战营-模块二作业

南山先生

架构训练营

Vue进阶(九十二):应用 postMessage 实现窗口通信

No Silver Bullet

Vue 9月日更

10个步骤成为K8S云原生工程师

云原生

Kubernetes 云原生 K8S工程师

极客时间【架构实战营】第二期 模块二作业

Geek_91606e

架构实战营

🌏【架构师指南】带你彻底认识Paxos算法、Zab协议和Raft协议的原理和本质

洛神灬殇

ZAB raft协议 paxos协议 9月日更

图解 | Linux内存回收之LRU算法

程序员 架构 面试

架构训练营模块二作业

guangbao

算法2021版第0期毕业总结

bin

【LeetCode】二叉树的深度Java题解

Albert

算法 LeetCode 9月日更

背完这套Java面试八股文,自动解锁面试牛逼症被动技能

北游学Java

Java 数据库 面试 算法 开发框架

香!阿里技术官甩我一份283页Java核心笔记,竟含9大核心

Java~~~

Java 架构 面试 JVM 多线程

Prometheus relabel 透析与实战

卓丁

Prometheus relabel_config

架构作业 - 模块一

Leo Zhao

架构实战营

从基础到实战!阿里P9用28天,总结出这份亿级活动高并发系统设计手册

Java 架构 面试 后端 高并发

LeetCode刷题977-简单-有序数组的平方

ベ布小禅

9月日更

【Flutter 专题】56 图解自定义 BubbleWidget 气泡插件

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

双非本科跨专业5面京东,8600小时后收到通知,流下喜悦泪水

Java~~~

Java 架构 面试 微服务 JVM

激动!阿里技术官纯手打,1263页并发编程全系笔记,限时开源

Java~~~

Java 架构 面试 多线程 并发

Fil价格强势上涨!fil的行情走势如何?Fil未来五年多少钱一枚?

区块链 分布式存储 fil币未来价格预估消息 fil大涨 fil价格行情

0基础架构入门 - 2(架构设计复杂度模型和应对之道)

felix

架构实战营 0基础架构入门

【VueRouter 源码学习】第三篇 - 路由插件 install 的实现

Brave

源码 vue-router 9月日更

微信朋友圈架构设计

白开水又一杯

#架构实战营

架构实战营-模块二作业

^_^

架构实战营

字节面试官狂问我:如何设计一个高并发系统?

Java架构师迁哥

阿里进阶专用:Mycat权威指南,不怕从零开始,只怕从未启程

Java~~~

Java MySQL 数据库 架构 面试

阿里技术专家,紧跟潮流,解读spring微服务架构技术的演进

Java~~~

Java 架构 面试 微服务 Spring Cloud

【架构实战营作业】模块二——朋友圈高性能架构

聆息

微信朋友圈高性能复杂度分析

一叶知秋

架构实战营

如何判断一个项目是否值得投资?

石云升

9月日更

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