写点什么

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

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

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

关注

评论

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

波场环球系统开发|波场环球软件APP开发

系统开发

uni-app 和 flutter 的区别

anyRTC开发者

flutter uni-app WebRTC 跨平台

一杯茶的功夫,上手Redis持久化机制

老崔说架构

redis 缓存 aof

android开发板!Android开发你需要了解的那些事,大牛最佳总结

欢喜学安卓

android 程序员 面试 移动开发

《精通比特币》学习笔记(第六章)

棉花糖

区块链 学习 3月日更

密码学系列之:内容嗅探

程序那些事

加密解密 密码学 程序那些事 内容嗅探

成为你向往的那只独角兽 - 《独角兽项目》出版在即

京东科技开发者

DevOps

Webpack 基石 tapable 揭秘

vivo互联网技术

大前端 webpack 流程管理 tapable

寻找被遗忘的勇气(十)

Changing Lin

3月日更

android开发教程!写给安卓软件工程师的3条建议,一线互联网公司面经总结

欢喜学安卓

android 程序员 面试 移动开发

翻云覆雨——前景理论之隔离效应

Justin

心理学 28天写作 游戏设计

智慧组工党建系统-数字赋能组织工作

13530558032

如何使用jsDelivr+Github 实现免费CDN加速?

xiezhr

CDN jsDelivr CDN CDN加速 jsDeliver

区块链赋能农产品溯源,农产品质量安全追溯

13530558032

电子产品如何使用IAP方式升级程序

不脱发的程序猿

嵌入式 iap 28天写作 3月日更 产品升级

在CentOS上安装MySQL,并使用DataGrip远程管理

pyfn2030

centos SSH MySQ datagrip

一文读懂Apache Flume概念、使用和原理

大数据技术指南

大数据 28天写作 3月日更

熬夜重构了IDEA插件Toolkit(整合程序员常用的工具箱),更加便捷

Silently9527

Java 程序员 idea插件

一个PHPer的Golang之路

万俊峰Kevin

php 微服务 Go 语言

Markdown中的图标为什么不是图片却可以以图片方式显示

happlyfox

28天写作 3月日更

带你轻松理解数据结构之Map

蛙人

JavaScript 大前端

所见即搜,3分钟教你搭建一个服装搜索系统!

华为云开发者联盟

框架 深度学习框架 mindspore Jina 服装搜索系统

美团优选大数据开发岗面试真题-附答案详细解析

五分钟学大数据

大数据 面试 28天写作 3月日更

手写的第一个 Java 应用程序,执行的时候发生了什么?

白色蜗牛

Java

二十张图让你一分钟全面学习数仓建设之路

初学大数据

大数据 数据仓库

CloudQuery v1.3.4 版本更新

BinTools图尔兹

oracle 运维 编辑器 sql 数据库管理工具

【LeetCode】基本计算器Java题解

Albert

算法 LeetCode 28天写作 3月日更

大作业(一)

cc

垃圾代码和优质代码的区别?

xcbeyond

Java 优化代码 3月日更

DDR4看这一篇就够了

Kevin Z

超震撼数据可视化工具

不脱发的程序猿

大数据 数据分析 数据可视化 28天写作 3月日更

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