生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

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

评论

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

港股交易系统开发之APP原生or封装?

软件开发大鱼V15988750073

证券 港股交易系统开发 港股打新系统 港股多账户系统 证券app

小六六学Netty系列之再遇Netty

自然

Netty 网络 9月日更

Linux系统安装Nginx

nginx Linux tree 9月月更

45张图带你从入门到精通学习WireShark!

wljslmz

Wireshark 网络技术 抓包分析 9月月更

多云时代如何实现自动化运维?博云给你最优解!

BoCloud博云

云计算 云原生 多云管理平台

全面构建数据安全“护城河”,助力企业数智化升级| 极客星球

MobTech袤博科技

大数据 数据安全

线上直播预告:数据库人才培养创新与变革

阿里云数据库开源

数据库

leetcode 437. Path Sum III 路径总和 III(中等)

okokabcd

LeetCode 数据结构与算法

融云 x KUPU:印尼蓝领用工的「直聘」样板

融云 RongCloud

互联网

C#/VB.NET: 为Excel表格添加超链接

Geek_249eec

C# Excel VB.NET 超链接

极致体验!基于阿里云 Serverless 快速部署 Function

阿里巴巴云原生

阿里云 Serverless 云原生

从成都核酸系统崩溃,谈谈IT系统如何应对10倍以上流量冲击

星汉未来

内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档

葡萄城技术团队

前端 PDF JavaScrip

数据可视化分析工具如何在国内弯道超车,迅速崛起?

葡萄城技术团队

计算机网络——分层结构

StackOverflow

编程 计算机网络 9月月更

网络IO是如何一步一步走向零拷贝的

C++后台开发

cpu 零拷贝 C++后台开发 网络io C++开发

国内唯一|阿里云入选 Gartner 应用性能监控与可观测魔力象限

阿里巴巴云原生

阿里云 云原生 Gartner 可观测

【InfoQ】博睿数据CTO孟曦东访谈实录:可观测性技术是未来发展方向

博睿数据

可观测性 博睿数据 智能运维AIOps 极客有约

从普通网站到 PWA 你还在重新写代码吗?

鼎道智联

前端 OS PWA

Online Schema Change(在线更新元数据)

KaiwuDB

分布式数据库 schema

Axios的引入与使用-提供可响应api案例

Sam9029

前端 网络 axios 9月月更

云桌面解决方案 企业最佳合作伙伴

力软低代码开发平台

Zilliz 论文入选数据库顶会 VLDB'22

Geek_2d6073

SD-WAN应用选路方案

阿泽🧸

SD-WAN 9月月更

每日一R「23」回顾基本概念

Samson

学习笔记 ​Rust 9月月更

国内低代码平台“定制化开发”能力较强的有哪些?

优秀

低代码

有效预警6要素:亿级调用量的阿里云弹性计算SRE实践

阿里云弹性计算

监控 预警 SRE实践

Elasticsearch6.1.2源码下载和编译构建

程序员欣宸

elasticsearch 9月月更

转转商业化OCPC产品的护航之旅

转转技术团队

人工智能 计算广告 PID OCPC

小六六学Netty系列之编解码器和handler的调用机制

自然

Netty 网络 9月月更

Java线程池创建方式和应用场景

Java快了!

线程池 java;

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