写点什么

敏捷开发下平衡质量和进度

  • 2014-08-21
  • 本文字数:1744 字

    阅读完需:约 6 分钟

敏捷软件开发团队必须确保他们开发出来的产品质量能够满足要求,管理团队也经常希望开发团队能够提高速度以实现为客户提供更多的功能。本篇文章中多个作者探讨了质量和速度之间的关系,并提出了一些既能提高质量也能加快进度的方法。

Bob Galen 曾今在他的博客中发表了读懂我的唇语 - 敏捷并不快速的文章,在其中写到了追求软件开发进度下质量的重要性。

敏捷是一个“质量游戏”,如果你以正直,承诺以及平衡的心态来玩这个游戏的话,那么结果将会是非常好的“速度游戏”,但它(速度)却并非没有代价。。。

如果你无法玩转这个质量游戏,你所采纳的敏捷开发方法甚至比你以前使用的开发方法更慢。

团队必须致力于把工作在一个迭代中完成,这也就意味着这些工作需要满足定义工作完成的所有标准。

很多敏捷团队允许返工 – 修复漏洞,完成测试自动化,重构,或者设计不良导致 sprint 迭代的延误。即使大多数的敏捷工具允许拆分用例故事以捕捉在 sprint 迭代中已经完成的工作对比延期的工作,我也还是认为这给团队传达了错误的信息,让他们认为工作不在一个 sprint 迭代内完成是可以接受的。

读懂我的唇语 – 并不是把所有事情做完,做完,做完!

正如 Bob 解释的:一个组织不应该总是力图让进度变得更快,而应该更加注重质量。

因此,下一次当你听到有人在激情澎湃的谈论着敏捷代表了更快的速度时,请打断他们,尝试向他们解释敏捷并不是一个“速度游戏”,而是应该强调敏捷是一个“或许能够快速运转的质量游戏”。

Tim Ottinger 曾今写过关于敏捷团队进度的 14 个奇怪观点,其中一个观点中就提到了质量和速度之间的关系。

尽管大家通常会降低质量要求以求在较短时间内尽快完成工作,但是如果团队所开发的代码质量不高的话,经过全部 sprint 迭代后的进度最终都还是会被降低。

Stephen Haunts 在他的题目为进度并不是目标或者目的博客帖子中,描述了当管理者设定团队的进度目标后对质量会产生什么影响:

(…)为了增加交付的功能点数目以满足绩效目标,团队会牺牲掉系统的质量,但从长远来看这样最终还是会降低团队的进度,并且会引入技术隐患。敏捷团队最好关注正在开发系统的质量与流程过程(持续交付和集成等等),以及负责开发系统的团队成员本身。

软件开发者必须在进度和质量之间掌握平衡,正如 Blake Haswell 在文章什么是代码质量中解释的那样:

虽然经常会有很多的外部压力向进度方面倾斜,但是如果你不够重视质量的话,进度最终还是会趋于缓慢以及停滞,以至最终整个项目走向颠覆。考虑到一个项目的代码质量决定了它能够在多大程度上适应需求的变化,一个可以持续改进的事情是你需要花费一部分时间来优化自己项目的代码质量。

Blake 提供了一个可以用来检查代码质量的属性列表:

  • 可理解性: 代码需要在各个层面上能够被容易地理解。理想情况下,软件应该非常简单,并没有非常明显的缺陷。
  • 可测试性: 代码需要被编写的非常容易被测试。
  • 正确性: 代码需要满足功能和非功能性的需求。
  • 有效性: 代码需要有效的使用系统资源(内存,CPU,网络连接,等)。

Hugo Baraúna 在他的博客文章名为内部质量低下软件的症状中解释了软件是如何因为变更而“变得更糟”的,最终导致质量低下并且降低进度。

假如你正在领导一家创业公司的技术或者产品团队,你是首席技术官,并且已经推出了你们产品的第一个版本,做的还挺成功的。你们的业务模型已经得到了验证,现在你们正处于快速发展期。这真是太棒了!但这也是有代价的,它带来了一系列新的挑战。

你们产品的第一个版本工作的很好,但是代码库却无法满足持续发展的要求。或许你的团队进度并没有像以前那样好了,团队成员一直在抱怨代码的质量问题,首席执行官和产品经理想要一些新的功能,但你现在代码规划根本无法满足业务的需求。

他提供了一个指示质量低下的症状列表,这个列表能够帮助你来决定是否需要重写或者重构:

  • 所有事情都很艰难
  • 进度慢
  • 测试套件运行缓慢
  • 无法避免的缺陷
  • 你的团队是消极的
  • 知识缺乏共享
  • 新开发人员成长周期太长

你又是如何平衡质量和进度的呢?

查看英文原文 Balancing Quality and Velocity in Agile


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-21 00:302803

评论

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

【文末有惊喜】仅四步!在华为开发者空间快速部署DeepSeek

华为云开发者联盟

人工智能 DeepSeek 华为开发者空间

有了DeepSeek等AI大模型,人人都能当医生吗?

京东科技开发者

新功能内测!图表解析上线,一键帮助大模型读懂图表数据

合合技术团队

人工智能 图像识别 #大模型 图表转换

企业数字化转型:你的企业处于哪个发展阶段?

积木链小链

数字化转型 企业管理 数字化

左移架构 -- 从攒批,湖仓到使用数据流的实时数据产品

AutoMQ

云计算 大数据 数据流 Apache Kafka

Vue.js 与低代码开发:如何实现快速应用构建

秃头小帅oi

通义灵码全新上线模型选择功能,新增支持 DeepSeek-V3 和 DeepSeek-R1 模型

阿里云云效

阿里云 云原生 通义灵码 AI程序员

MES系统:加速制造业数字化转型的驱动力

万界星空科技

数字化转型 制造业 mes 数字化工厂 万界星空科技mes

[特殊字符] DeepSeek-R1原理解析及项目实践(含小白向概念解读)

京东科技开发者

车规级芯片研发,数字化能起多大作用? | 数据要素 × 工业制造

奇点云

数据 工业制造

原理剖析:一文搞懂 Kafka Producer(上)

AutoMQ

云计算 消息系统 数据流 Kafka Producer 数据分区

如何在百度百舸部署满血版DeepSeek-V3、DeepSeek-R1模型

百度Geek说

四大核心优势,多场景覆盖,息壤智算一体机-DeepSeek版强势来袭!

天翼云开发者社区

人工智能 AI 算力 私有化部署 DeepSeek

如何借助NoETL指标平台实现数据分析、决策的提效?

Aloudata

数据分析 数据指标 noetl 指标设计指标体系

通义灵码全新上线模型选择功能,新增支持 DeepSeek-V3 和 DeepSeek-R1 模型

阿里巴巴云原生

阿里云 云原生 AI程序员

WebGIS项目的开发流程

北京木奇移动技术有限公司

软件外包公司 webGIS开发 GIS开发

什么是二级域名?二级域名怎么解析?

国科云

快手Java透明协程:实现零代码修改提升30%QPS

快手技术

Java 协程 快手

同一天线针对不同位置同时优化【CST仿真案例】

思茂信息

cst cst电磁仿真 CST软件

敏捷开发下平衡质量和进度_架构_Ben Linders_InfoQ精选文章