写点什么

给成功敏捷开发的 26 条建议

2009 年 11 月 08 日

Keith Swenson 最近编制了一份给敏捷软件开发的 26 条建议。Keith 提到他常常收集一些不同主题的至理名言,这份列表是这一系列至理名言的精华,肯定能很好地帮助到敏捷软件开发。

在他的博文中,有人评论说很多建议可能并不是专门针对敏捷的,而是面向如何更好的软件开发和设计。Keith 回应说对于有资历的敏捷实践者而言,那些建议可能听起来太平常了,但是还是有更多的受众对那些实践并不是太了解。他补充说:

我正和几个团队在日本一起工作,他们使用一种很严格的瀑布开发模式。对于这种团队来说,我提到的那些建议,可能有一半都“令人惊奇”,甚至可能被认为是很激进的意见。比如“先写测试再写代码”以及“没有必要就永远不要去实现”这些对他们来说就是很激进的概念。他们自豪于“全面”实现功能,甚至去杜撰客户并未提出的用例。结果当然就是代码过度,这是另一种浪费。他们有时候等 6 个月来完成测试。对于在严格的瀑布模式中进行实施的人们来说,测试只是一种“辅助”,正确工作的程序员不需要它。很惊奇哦?

Keith 提议的某些“不是非常常见” 的有趣建议有:

  • 完整地做完第一件事后再开始第二件。软件开发的一个大问题就是同时做几件事情,这将不可避免地使得某些工作被废弃从而造成浪费。用厨房来比喻就是:“先上这道菜,再开始烧下一个。”
  • 不要害怕做决定;不要害怕改变先前的决定。最大可能地延迟决策,直到必须做决定的时候。一旦有新的信息了,不要害怕改变先前的决定。
  • 度量、度量、度量。敏捷开发帮助处理了未来不确定性的问题。但是对于过去,应该没有不确定的事。
  • 设计是为了人,而不是系统。太多的程序员偏离了设计的目的,而更关注技术本身。软件最终的成功取决于让人们有效合作并增加商业价值。
  • 过早地进行优化是万恶之源。仅仅基于对代码的静态理解就直觉地判断什么对整体性能最为重要,结论几乎总是错误的。相反,应该衡量整个系统的行为,随后来识别性能问题。
  • 决不过度强调功能的通用性。这也就是著名的“YAGNI——你不会需要它的(You Aren’t Going to Need It)。”
  • 不要用代码行数来度量代码。完成特定任务所需的代码行数,不同的程序员之间和编码风格之间差异很大。应该去统计功能用例的数目。
  • 软件是可塑的。不像实体制造业,软件可以很容易地获得显著改变。
  • 不要去发明新的语言。XML 的出现引领了无休止的专门订制“脚本语言”的潮流,想来应该会让软件开发更加趋同。这种推理的缺陷在于,离开某个特定实施的环境,几乎从来都没能很好地精确定义操作行为。

想获得更多的信息,请访问这份完整的建议清单。如果你觉得有什么重要的观点遗漏了,请留言。

查看英文原文: 26 Hints for Successful Agile Development

2009 年 11 月 08 日 06:404785
用户头像

发布了 114 篇内容, 共 24.8 次阅读, 收获喜欢 0 次。

关注

评论

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

LeetCode题解:155. 最小栈,单个栈存储入栈元素与最小值之差,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

当有人把GoF的23个设计模式嚼碎给你——你才会发现有多简单

周老师

Java 编程 程序员 架构 面试

关于显性知识和隐性知识

Tanmer

知识管理 知识产权

华为云FusionInsight大数据技术普惠创新,释放千行百业数据价值

FI洞见

大数据 FusionInsight 华为云

大数据应用场景

dongge

SpreadJS 纯前端表格控件应用案例:雨诺订单管理系统(雨诺OMS)

Geek_Willie

Spring Bean处理器

TinyKing

Spring Framework

你问我答:现有的应用有必要做微服务改造吗?

博云技术社区

DevOps 微服务 容器云 云平台 博云

深圳泰利能源有限公司涉嫌传销 共计2.7亿元

CECBC区块链专委会

区块链 基金

十年Java开发传奇经历:我是如何从外包逆袭成为大厂架构师的

Java成神之路

Java 程序员 面试 微服务 多线程

【Spring Boot系列】之多种依赖集成方式

TinyKing

架构设计开学第一天

escray

学习 从零开始学架构 架构师预科班

腾讯技术专家图解29种设计模式中常见问题类级与方法级解决方案

周老师

Java 编程 程序员 架构 面试

某程序员毕业进UC,被阿里收购!跳去优酷土豆,又被阿里收购!再跳去饿了么,还被阿里收购!难道阿里想收购的是他?

程序员生活志

职场 阿里

数字资产钱包开发,数字加密货币app搭建

13530558032

FlinkX 如何读取和写入 Clickhouse?

Apache Flink

flink

2020-08-29-第十二周作业

路易斯李李李

案例分享丨红外自动感应门设计与实现详解

华为云开发者社区

物联网 传感器 感应探测器 SMT32处理器 感应门

XSKY对象存储获全球备份领域领导者Commvault官方认证

XSKY融合存储

3种双集群系统方案设计模式详解

华为云开发者社区

数据库 数据仓库 数据 双集群系统 双ETL模式

凡泰极客与Rancher达成深度战略合作,加速企业构建私有化小程序生态

fino星君

人的转型才是关键 数字化时代你具备数字领导力么

CECBC区块链专委会

区块链 数字化时代

从 Node.js(JavaScript) 到 Golang,我的开发体验

Garfield

go node.js golang新手

读懂k8s 容器编排控制器 Deployment

Garfield

k8s pod k8s入门

区块链助力军事人力资源配置

CECBC区块链专委会

区块链 军事

区块链支付新模式开发,USDT支付系统搭建

13530558032

数字货币交易平台源码,数字货币交易所开发核心功能

13530558032

技术分享:即构互动白板音视频同步、多端有序协作技术实践

ZEGO即构

音视频 在线教育 SVG

融云Geek Online 2020 编程挑战赛重磅来袭

InfoQ_967a83c6d0d7

云算力挖矿平台APP,算力挖矿建设开发

13530558032

kubernetes node affinity 写法

Geek_f24c45

Kubernetes

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

给成功敏捷开发的26条建议-InfoQ