QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

    阅读完需:约 4 分钟

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

约束

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

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

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

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

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

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

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

查看英文原文: The Design Dilemma

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

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

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

关注

评论

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

深入了解区块链浏览器

dappweb

区块链浏览器开发

ODBC适配国产数据库

扬_帆_起_航

lua MySQL Gateway kong 达梦

中国唯一零售企业!京东入选2024 Gartner全球供应链25强

京东零售技术

京东 供应链

BELLE-开源中文对话大模型

百度开发者中心

#人工智能 #大模型

100页2秒?我们为什么需要这样的文档解析速度

合合技术团队

人工智能 OCR 文档解析

融合低代码平台与软件定制的客户管理系统:加速企业数字化转型

天津汇柏科技有限公司

数字化转型 低代码开发 客户关系管理系统 软件开发定制

阿里云入选Gartner「边缘分发平台市场指南」代表厂商

MasterInTech

CDN 阿里云; 边缘云

全球八大云厂商,谁的RDS MySQL性能最强?

NineData

腾讯云 AWS 华为云 云厂商 RDS MySQL性能测试

疯狂裁!大厂保利润的手段,中小企业学得来吗?

ToB行业头条

API接口详解及其在电子商务中的应用研究

Noah

MarsEdit for mac 支持离线管理几乎所有的博客类型

Rose

Downie 4 for Mac(视频下载工具)兼容14系统v4.7.16中文版

Rose

专业的现场分屏演示工具ProPresenter v7.16.2汉化版 Mac/win

Rose

OWASP API Security Top 10解读

芯盾时代

网络安全 数字化 网关 API网关

关于Vearch在大模型中使用的一些实践

京东零售技术

人工智能 大模型 向量数据库 企业号 6 月 PK 榜

JavaScript 事件循环竟还能这样玩!

Immerse

实力!云起无垠晋级“第九届安全创客汇”年度10强

云起无垠

外部磁盘弹出辅助工具 Jettison for Mac v1.8.8直装版

Rose

jprofiler(Java性能分析工具)

Rose

基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用

阿里云大数据AI技术

大数据 阿里云 大数据开发 EMR

JavaScript 事件循环竟还能这样玩!

Immerse

人工智能文生图介绍

测试人

人工智能 软件测试 AIGC

Prompt Tuning:大模型微调实战

百度开发者中心

人工智能 深度学习 大模型

推动AI“产业实用”的腾讯云,不可小视

ToB行业头条

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