写点什么

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

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

评论

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

必看!人工智能通识课怎么上?解答你最关心这 6 个问题!(1)

ModelWhale

人工智能 大数据 人工智能通识课

WebGL在医学领域的应用

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

医学影像 软件外包公司 webgl开发

Swift Publisher 5 for Mac(专业版面设计工具)v5.7.0直装版

小玖_苹果Mac软件

PullTube for Mac(在线视频下载器)v1.8.5.52中文激活版

小玖_苹果Mac软件

必看!人工智能通识课怎么上?解答你最关心这 6 个问题!(2)

ModelWhale

人工智能 大数据 教改

解密人工智能:如何改变我们的工作与生活

天津汇柏科技有限公司

AI 人工智能

Topaz Photo AI for Mac(人工智能降噪软件)v3.4.3 激活版

小玖_苹果Mac软件

VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS NVMe 驱动特殊定制版 (集成驱动版)

sysin

esxi

VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS Huawei (华为) 定制版

sysin

esxi

Eon Timer for Mac(好用的时间跟踪定时器)v2.9.15中文激活版

小玖_苹果Mac软件

Scherlokk for Mac(文件搜索软件)v6.3.4激活版

小玖_苹果Mac软件

PullTube for Mac(在线视频下载器)v1.8.5.52中文激活版

小玖_苹果Mac软件

WebGL开发手术模拟系统的技术难点

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

软件外包公司 webgl开发 手术模拟

拼多多根据ID取商品详情原数据API接口的开发、运用与收益

科普小能手

数据挖掘 电商 API 接口 API 测试 拼多多API

天谋科技获授 2024 小米 Vela 全球生态合作伙伴

Apache IoTDB

探析同济医院科研一体化平台建设(三):科研人才分层培养

ModelWhale

人工智能 大数据 医疗

转载:GaussDB TPOPS搭建流程

炸鸡配冰淇淋

GaussDB TPOPS

MES系统在肉制品加工行业解决方案

万界星空科技

mes 万界星空科技mes 食品MES 食品行业 肉制品加工

触目惊心,部分行业POI减少超百万!2025年选址挖掘分析建议更新至2024年12月31日最新全国所有类别POI,共6721万个

Geek_f9782a

GIS POI数据

MacMagic for Mac(系统垃圾清理软件)v1.2.5激活版

小玖_苹果Mac软件

第81期 | GPTSecurity周报

云起无垠

Data Guardian for Mac(数据加密保护工具)v7.6.9激活版

小玖_苹果Mac软件

MacPilot for Mac(系统优化软件)v16.2激活版

小玖_苹果Mac软件

AirRadar for Mac(无线wifi搜索工具)v7.4.2激活版

小玖_苹果Mac软件

商会信息化管理系统(源码+文档+部署+讲解)

深圳亥时科技

谜局剧本杀系统(源码+文档+部署+讲解)

深圳亥时科技

行政审批远程勘验管理系统(源码+文档+部署+讲解)

深圳亥时科技

2024 年度时序数据库 IoTDB 论文总结

Apache IoTDB

【完全免费】开源零代码平台,敲敲云 v2.0 首版本发布

JEECG低代码

零代码 低代码平台 零代码平台

必看!人工智能通识课怎么上?解答你最关心这 6 个问题!(3)

ModelWhale

Python 人工智能 大数据

PowerPhotos for Mac(mac专用图片管理工具)v2.7.2直装版

小玖_苹果Mac软件

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