报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

  • 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:302762

评论

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

防火墙软件Little Snitch for mac激活版

小玖_苹果Mac软件

磁盘清理工具Magic Disk Cleaner for Mac激活版

小玖_苹果Mac软件

智能PDF编辑器PDFelement Pro 11 for mac激活版

小玖_苹果Mac软件

在线CAD绘制门和窗(WEB开发CAD家装设计软件)

WEB CAD SDK

网页CAD 在线CAD WEB CAD web cad sdk

TiDB:Prometheus 安全访问策略配置全指南

TiDB 社区干货传送门

监控 集群管理 管理与运维

TiDB 升级高版本时 “mysql.tidb_runaway_watch” 不存在问题解决攻略

TiDB 社区干货传送门

版本升级 集群管理 管理与运维 6.x 实践 7.x 实践

总结 JavaScript 中的变体函数调用方式

李游Leo

JavaScript 前端 前端‘’

软件包提取工具Pacifist for mac激活版

小玖_苹果Mac软件

代码片段管理工具SnippetsLab for Mac激活版

小玖_苹果Mac软件

TiDB:AUTO_INCREMENT 实现连续自增的改造要点

TiDB 社区干货传送门

迁移 实践案例 管理与运维

天下武功,唯快不破 : TiDB DDL 语句执行性能整体提升 10 到 50 倍

TiDB 社区干货传送门

8.x 实践

2024 TiDB 社区年度总结,又携手共进了一年,2025年,一起迎接变化,挑战变化!

TiDB 社区干货传送门

Java 调用 Go 解决方案

FunTester

RAG的技术困境:为何单纯依赖向量嵌入不可靠?

Baihai IDP

人工智能 程序员 AI LLMs rag

为什么软件测试开发需要智能体(AI Agent)?

测试人

软件测试

详解GaussDB事务和并发控制机制,提升事务并发处理效率

华为云开发者联盟

数据库 并发控制 GaussDB

使用JMeter玩转tidb压测

TiDB 社区干货传送门

性能测评

TiDB 版本升级:glibc 2.17 升级到 glibc 2.28 最佳实践

TiDB 社区干货传送门

版本升级

“领导企业转型必修课” 3月1-2日敏捷领导者(CAL1)认证周末班

ShineScrum

Scrum 敏捷 敏捷领导力 敏捷培训

代码之美:聊聊代码整洁之道

京东零售技术

博客编写预览发布工具MarsEdit for mac激活版

小玖_苹果Mac软件

结合LangChain实现网页数据爬取

测吧(北京)科技有限公司

测试

知乎 TiDB 实践系列 | tidb-operator 生产实战篇(TiDB v8)

TiDB 社区干货传送门

实践案例 管理与运维 安装 & 部署 TiDB Cloud

揭秘大厂后端面试硬核考点

王中阳Go

面试 后端 Go 面试题 面经 后端 大厂

智慧公厕2.0:未来城市公共卫生空间的新探索

光明源智慧厕所

免费下载|《可观测性体系建设100问》全册解锁!

博睿数据

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