抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

稳定 sprint:必要的过错,还是纯粹的浪费?

2009 年 12 月 27 日

Dushy 曾经听过“稳定 Sprint”,质疑它们是否属于敏捷规范的一部分。稳定 sprint,是指在正常的开发周期临近结束时,在交付产品之前那几个附加的 sprint。如其名所示,加上它们一般是为了最后一次把产品稳定下来,去掉最后几个 bug。

Ilja Preuss 指出:“稳定 sprint 的存在,标志着你对于‘完成’的定义还不完成,或是没有遵循这个定义。”

Sarath Kummamuru 提出:他见到一些案例,其中稳定 sprint 是有价值的。

  1. 处理由于急于完成一个 sprint 所积累下来的技术债务(主要包括重构现有代码、提升单元测试覆盖率等工作)。
  2. 处理 QA 债务,是因为每个 sprint 缺少完全的自动化和回归测试所积累下来的。当公司在处理没有太多自动化手段的遗留代码库时,常会出现类似问题。
  3. 要发布的产品,其测试和验证要在多种平台上完成(比如在不同应用服务器上验证,在不同操作系统平台上验证产品的可用性等等)。
  4. 如果需要完成任何软件打包的工作(比如发布用的 CD 等等),这些一般都会在发布 / 稳定 sprint 中完成。

本文作者发现:是否有必要接受稳定 sprint,类似于是否给人一副拐杖,而且以后再也不帮助他们独立行走。要把当前已有代码的测试全部自动化可能需要好几年时间,但是没有借口让目前自动化测试不完整的现状一直持续下去。而且,任何没有自动化验收测试和单元测试的代码,其质量都是未知的。我们不知道其中是否隐藏着 bug——(从精益的角度看)这就是浪费。

Edward Arunal 提到:“一般来说,如果有任何东西处于等待阶段,就说明我们在积累债务。很多时候,你可能需要不止一个稳定 sprint,这会带来发布的不可预测性。(相当于延迟,利益干系人更不喜欢不可预测性)”

Mark Woyna 给出一个例子,指出消除稳定 sprint 在经济上并不可行。在这个例子中,测试环境由 800 台服务器构成(价值数百万美元),每秒需要完成 30 万次操作。在这些服务器上运行的测试要用 3 至 4 周,当这些服务器要进行一次升级时,团队需要模拟出这种情况下会发生什么。然而,Mark 指出这只是特例,“我同意你们的说法,在稳定 sprint 中的工作就是没有完成的工作……如果软件有问题,我们更希望发现得越早越好。”

最后, Steve Gordon 指出:

修复这种有问题的工作之根源,这才是改进之道。没错,我们需要解决眼前的问题,可如果到此为止,问题会一再出现,你将会一直与不完整的工作和“不可预知”的缺陷为伍。 接受“稳定 sprint”做为周期性的、正常的实践,这等同于仅仅解决眼前的问题、而且愿意接受同样的问题一再发生。

InfoQ 之前的相关新闻:“完成”意味着“可交付”吗?

查看英文原文: Stabilization Sprints, A Necessary Evil or Pure Waste?

2009 年 12 月 27 日 08:111126
用户头像

发布了 87 篇内容, 共 15.4 次阅读, 收获喜欢 4 次。

关注

评论

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

Java-技术专题-挖掘陷阱系列(1-10)

李浩宇/Alex

Java

桶排序,计数排序,基数排序

一个大红包

3月日更

飞桨框架2.0正式版重磅发布,一次端到端的“基础设施”革新

百度大脑

AI 分布式 框架 #百度#

产品经理大作业

赵志广

产品经理训练营

重磅 | 国内首款研发OKR管理工具PingCode Goals正式发布

PingCode

OKR 研发管理 研发效能 研发管理工具

自定义融云会话列表 cell 选中背景

融云 RongCloud

集成融云 IMLib 时,如何实现一套类似于 IMKit 的用户信息管理机制

融云 RongCloud

融云 IM SDK 如何插入消息

融云 RongCloud

如何隐藏融云输入框语音按钮

融云 RongCloud

大作业 1

简简单单

Hystrix技术专题-基础配置说明

李浩宇/Alex

Hystrix

融云聊天页面长按消息后“翻译”功能的实现方法

融云 RongCloud

跳槽涨薪必备秘籍!阿里内部面试突击手册,满满的全是精华

互联网架构师小马

Java 面试 软件开发 求职 找工作

给融云的输入框上方加个功能按钮,怎么整?

融云 RongCloud

应对“角色爆炸”,PBAC 真香!

龙归科技

权限控制 管理系统 权限管理

使用融云 IM 点击最近聊天记录时跳转到 @ 自己的消息

融云 RongCloud

融云 IMKit 音频录制参数

融云 RongCloud

Worktile CTO :研发团队落地OKR管理经验分享

PingCode

团队管理 互联网 OKR 研发管理 研发管理工具

还在计划转Go么,聊聊程序员的成长

架构精进之路

go 3月日更

30 分钟集成融云 IM 即时通讯

融云 RongCloud

如何设置融云用户信息

融云 RongCloud

唠一唠融云的消息补偿机制

融云 RongCloud

大厂敲门砖!P9技术官级别的顶级并发编程宝典,献给想去大厂的你

Crud的程序员

Java 程序员 架构

浅谈自动化测试

行者AI

自动化测试

使用融云 SDK 避坑指南之 iOS13 推送失败

融云 RongCloud

融云的聊天页面在 iOS14 出现崩溃的解决办法

融云 RongCloud

干货分享——使用融云通讯能力库 IMLib 实现单群聊的阅读回执

融云 RongCloud

NAC公链公链未来前景如何?为应用而生的Nirvana NA公链

区块链第一资讯

区块链 公链 挖矿

MMMDeFi智能合约(MDF互助)系统开发方案

薇電13242772558

智能合约 数字货币

LeetCode题解:221. 最大正方形,动态规划,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

为融云聊天页面的输入框添加 Placeholder

融云 RongCloud

Study Go: From Zero to Hero

Study Go: From Zero to Hero

稳定sprint:必要的过错,还是纯粹的浪费?-InfoQ