红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

AgileChina2009 演讲人、极限编程创始人 Kent Beck 谈“设计困境”

  • 2009-08-27
  • 本文字数:1271 字

    阅读完需:约 4 分钟

软件设计需要解决一系列相互矛盾的需求,这也是为什么会有很多人拥有不同的设计思路,而这些思路在某些场景下又都好用的原因。没有什么能让这些矛盾 消失,设计风格的好坏依赖于如何化解矛盾,哪些约束在早期满足,哪些放到后期处理。想要让设计考虑周全,第一步就得先承认世上不存在完美的设计。

约束

下面这些约束是无法去除的:

  • 成本。设计应尽可能降低开发成本,包括短期成本和长期成本。
  • 先于实现。因为设计良好的特性会比设计低劣的特性成本低得多,所以应该在实现之前就完成设计。
  • 变更成本。更改设计决策的代价很高,如果只设计一次而且不再修改,就可以降低成本。
  • 收益。设计应该让收益最大化。如果能够在恰当的时机交付恰当的特性,完成既定的销售,那么从长期来看代价很高的设计,也能够创造更高的价值─尤其是当产品还处于起步阶段的时候。
  • 时间价值。成本和收益不应该在产品的生命周期内一直简单的增加。今天的一美元要比明天的一美元值钱,所以设计应该把成本推到将来,把收益放到现在。
  • 选择价值。因为软件本身存在不确定性,所以如果设计能够保证以后的开发工作有选择的余地,那么它就比那些刻板的设计更有价值。
  • 不确定的需求。你不可能事先知道设计需要支持哪些特性。正因为如此,你应该推迟设计决策,直到必需的时候再做。
  • 设计改进。你会在工作的同时,学到如何做出更好的设计。要准备好随时把你学到的东西结合进来。
  • 循序渐进方能成功。所以设计也要不断进化。
  • 不存在绝对正确的答案。对于任何一个特定的问题,都有若干组可行的设计,以及几乎无数种糟糕的设计。但即便是糟糕的设计也不是错到极点,至少短时间内还能用。

把这些约束放到一起,就组成了一个约束过多的系统。你根本找不到解决方案,举个例子来看,你可能即想尽可能减少成本,又想降低变更成本,还想在过程中学习。

在不同情况下,这些约束的强度也不同。有时候,产品的特性范围可能是非常模糊的。在为人熟知的领域中,团队基本上不会发现新的设计要素。相对于成熟 产品而言,还处于初期阶段的产品,其时间价值就尤为突出。成熟产品的长期成本对利润起着决定性作用。没有任何一组设计规则能够满足所有情况。有些价值和原 则比较通用,但是具体到实践就会迥异。

我现在提倡并实施的是响应式设计。我认为比较重要的是“不确定的需求、时间价值、选择价值、设计中的学习、循序渐进”。我把“变更成本高”这一点放 到以后去考虑。我努力以我的开发风格工作,在设计变更的时候,通过组合使用技术、社会组织、工具和普通实践来降低变更成本。其结果就是,以某些长期成本为 代价交付成果,当项目中某些不确定性被解决以后,又可以很快降低成本。

没有任何一款设计风格能够同时最小化成本,最大化收益,还能从短期长期来看都保有选择的余地。选择好哪一个约束先满足,哪些推后,就可以得出价值和过程都很明确、易于沟通的设计风格。让一切变得明确,就是讨论设计的开始。

我将会首次针对“响应式设计”作全天的培训,第一次是 9 月 4 号,在首尔;然后是9 月10 号,在北京

查看英文原文: The Design Dilemma

(注:本文原发作者博客,经作者允许后翻译发布,译者──李剑)

2009-08-27 21:482646
用户头像

发布了 197 篇内容, 共 52.2 次阅读, 收获喜欢 20 次。

关注

评论

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

干货丨中国移动5G数字工厂引领工业数字化未来(附PPT)

工赋开发者社区

PPT | 智能工厂生产制造执行系统(MES)建设方案

工赋开发者社区

用友第五届开发者大赛初赛晋级公示,复赛火热进行中!

YonBuilder低代码开发平台

物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证

TDengine

时序数据库 #TDengine 国产时序数据库

数字货币交易平台,专业数字货币交易系统开发

V\TG【ch3nguang】

CRM系统开发要多少钱_CRM管理系统开发报价

V\TG【ch3nguang】

Mac苹果电脑无线鼠标连不上怎么办

柠檬与橘子

鲸鸿动能加入气候行动,与野生救援(WildAid)探索公益新玩法

最新动态

入门有监督学习:数据、模型、度量

麦田的守望者

机器学习 有监督学习

低代码引擎 TinyEngine 正式发布!!!

OpenTiny社区

开源 前端 低代码

【华秋干货铺】双面混装PCBA过波峰焊时,如何选用治具?

华秋电子

PCB

腾讯云ES:一站式接入,数据链路可视化重磅来袭!

腾讯云大数据

ES

Golang 的 GMP:并发编程的艺术

树上有只程序猿

golang GMP

基于Kubernetes的Serverless PaaS稳定性建设万字总结

Serverless Devs

云计算 Serverless 运维 托管

哪款国产堡垒机好用便宜实惠?大家推荐一下!

行云管家

网络安全 数据安全 堡垒机 国产

【效率提升】maven 转 gradle 实战 | 京东云技术团队

京东科技开发者

maven 编译 Gradle 打包工具 企业号9月PK榜

广东汕头等保测评机构有哪些?位于哪里?

行云管家

等保 等级保护 等保测评 汕头

华秋应邀精彩亮相IOTE物联网展

华秋电子

IOTE

同一份数据全域共享,HashData UnionStore实时性背后的故事

酷克数据HashData

软件测试/测试开发丨ChatGPT在测试计划中的应用策略

测试人

人工智能 软件测试 测试开发 ChatGPT

文档信息抽取技术:从非结构化文本到结构化信息的旅程

合合技术团队

人工智能 技术 文档 文档抽取

深度学习之“切图”

矩视智能

深度学习

亚马逊云科技面向 macOS 的 Amazon 云服务器 EC2 M1 Mac 实例

亚马逊云科技 (Amazon Web Services)

存储 VPC EC2

直销系统开发|直销系统开发详解

V\TG【ch3nguang】

ByConity 技术详解之 ELT

字节跳动开源

大数据 开源 实时数仓 Clickhouse 数仓

Photoshop 2023 (ps 2023) for Mac v24.7正式版

mac

PS2023 苹果mac Windows软件 图像编辑软件 ​Photoshop 2023

从 Hackathon 战队到创业公司,和开发者们聊聊真实世界 AI Apps 的基础设施丨活动预告

PingCAP

数据库 开发 hackathon TiDB pingCAP

聊聊wireshark的进阶使用功能 | 京东云技术团队

京东科技开发者

网络协议 Wireshark 抓包 企业号9月PK榜

这个时代,由消费主导的敏态数据更值钱

ToB行业头条

深入探讨Java面试中内存泄漏:如何识别、预防和解决

程序那些事

Java 程序那些事 面试秘籍

一篇聊聊Mybatis插件开发

互联网工科生

sql 数据 mybatis

AgileChina2009演讲人、极限编程创始人Kent Beck谈“设计困境”_研发效能_Kent Beck_InfoQ精选文章