敏捷开发精准估算

估算并非易事。对软件开发人员来说,估算堪称是最难的工作之一。估算必须考虑所有能帮助产品负责人做出影响整个团队和业务决策的因素。因此,从开发到高管都为它焦头烂额也不足为奇,但这种做法是错误的。敏捷估算并不是什么性命攸关的大事,就只是估算而已,事实就这么简单。

我们不用要求团队周末加班加点来弥补一项被低估的工作。换句话说,与其事后补救,不如事前看一看有什么方法可以让敏捷估算尽可能变得更精准。

与产品负责人(PO)合作
敏捷开发中,产品负责人 要负责确定backlog的优先级次序——即一个按优先级排好序的工作列表,其中包含关于产品所有所需完成的功能和修复的缺陷的简短描述。产品负责人能够从业务中提取需求,但他们不一定了解具体如何实现。因此,精准的估算能让产品负责人对每个工作项目的工作量有新的了解,这对他们评估每个项目的相对优先级能起到一定作用。

开发团队开始估算后,关于需求和用户故事的问题会经常出现。这是一件好事:这些问题可以帮整个团队更加充分的理解工作。对产品负责人来说尤为特别,将工作项拆解为粒度较小的任务,然后通过估算故事点帮助他们确定所有(和可能隐藏的)工作的优先级。而一旦他们得到开发团队的估算后,可能会再重新排列backlog中的工作项。

敏捷估算是一项团队工作
敏捷估算的关键在于全员(包括开发人员、设计人员、测试人员、部署人员……等等)参与。团队每个成员都能就产品和需要交付的工作贡献一个用户故事。例如,如果产品管理者想要实现支持新浏览器这一看似简单的功能,开发和QA就需要谨慎权衡,因为他们的经验告诉他们这个看似简单的需求背后可能隐藏巨大的困难。

同样的,设计的变更不仅要设计团队的投入,还需要开发和QA人员的参与。缺乏全员参与的估算会降低估算质量,也会导致团队士气低迷,因为关键的贡献者会认为自己被排除在外。所有这些因素都会影响最终交付的软件质量。

因此,不要让你的团队成为封闭估算的受害者。封闭状态下的估算只会加速失败。

故事点和小时数
传统的软件开发团队以时间为单位来估算工作量,例如:天、周、月等等。而敏捷团队大多采用故事点为计量单位。故事点的相对规模(工作量)用斐波那契数列如0, 0.5, 1, 2, 3, 5, 8, 13, 20, 40, 100表示。这听起来似乎有点有违常理,但这种抽象的表述实际上能够促使团队针对工作的难点做出更果断的决策。下面是使用故事点的几点原因:

以日期为单位,无法计量那些无法避免的非项目相关的工作,如需要团队成员参与的电子邮件、会议和访谈等。
日期可会存在一定的感情因素,而相对估算则可以剔除感情因素。
每个团队估算工作的范围略有不同,这意味着团队的速度(以故事点为计量单位)自然也会有所不同。反过来,这样就可以避免出现以速度为争端的团队间的勾心斗角。
一旦团队就每个故事点价值的相对工作量达成一致,团队就可以在无争议的情况下实现点数的快速分配。
故事点能够激励团队成员以工作难度而非耗费的时间为基础来解决问题。这确保团队成员能专注于价值交付,而不是强调花费了多少时间。
故事点和计划扑克
使用故事点进行估算的团队会用计划扑克的形式来统一团队的估算值。团队从backlog中抽取一个工作项,简单地讨论之后,请每个成员在脑海里构思一个估算。然后每个人拿一张卡片,写下自己的估算值,由scrum master收齐卡片后展示每位的估算值。如果估算一致,那么讨论结束,如果存在不同的估算值,就花点时间(无需太久——几分钟即可)了解为什么成员给出了不同的估算。记住,估算讨论应该抓大放小、提纲挈领,如果团队过于纠缠细节,则暂停讨论,提升讨论的水平和高度之后再继续。

精准估算讲究效率,无需浪费时间
任何单个任务都不应花费超过16小时。(如使用故事点,则可以设置20个故事点为上限)。如果单个工作项超过这一工作量,对其进行精准估算会更难。而精准估算对于位于backlog顶部的工作项来说尤为重要。如果单个工作项的估算超过了16小时(或20个故事点)的上限,意味着我们需要将其拆分为更小的工作项并重新进行估算。

对于那些位于backlog下方的工作项,可以只进行粗略估算。因为等到团队真正开始要做该工作项时,需求可能已经发生了变化,相应的应用程序肯定会有所变化。因此,先前的估算可能就会不那么准确。所以不要浪费太多时间去估算那些可能会发生变更的工作项。只需要提供粗略的估算,为产品负责人提供一个可以用来确定产品路线图优先级次序的大概数据即可。

借鉴以往估算的经验
回顾会议是团队从已完成的迭代中总结经验教训的机会,当然也包括估算准确性总结。很多敏捷工具可以跟踪故事点,这让团队可以更轻松地反思和调整估算。例如,我们可以尝试提取过去故事点估算值为8 的5个用户故事,讨论每个工作项的工作量是否大致相同。如果存在差异,讨论其背后的原因。然后将讨论得到的经验用于未来的估算。像敏捷的其他实践那样,估算也是一项熟能生巧的实践。因此团队肯定会越做越好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人人站CMS后台登不进去解决方案(已解决)

公司有一个网站使用的是人人站CMS,最近发现后台登录不进去,有以下报错 发生以下错误: file get contents(http://www.rrzcms.com/Public/cms/config/config.ison): failed to open stream: HTTP reguest failed! 请求的URL导致内部服务器错误。 如果您反…

win11文件共享失败的问题

前言 windows 11连接公司内部服务器报错,报错如下: 因为文件共享不安全,所以你不能连接到文件共享。此共享需要过时的SMB1协议,而此协议是不安全的,可能会使你的系统遭受攻击。你的系统需要SMB2或更高版本。有关如何解…

JavaScript进阶:js的一些学习笔记-2

文章目录 1. 构造函数1. 实例成员、静态成员2. 内置的构造函数 1. 构造函数 构造函数是一种特殊的函数,主要用来创建对象。通过构造函数可以快速创建多个类似的对象 创建对象的三种方式 const obj1 {username:liuze}; // 方法1 const obj2 new Object(); obj2.u…

C语言下使用SQL语言

需头文件&#xff1a;#include<sqlite.h>---需下载 1.sqlite3_open int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); 功能: 打开数据库文件(…

188基于matlab的AR模型参数估计

基于matlab的AR模型参数估计&#xff0c;burg法和ule-Walker法估计信号&#xff0c;并输出估计误差。程序已调通&#xff0c;可直接运行。 188 AR模型参数估计 burg法和ule-Walker法 (xiaohongshu.com)

展厅设计中灯光的要点都是什么

1、白炽灯 白炽灯也就是普通普通白炽灯泡白炽灯有显色性强&#xff0c;开灯即亮&#xff0c;明暗可调&#xff0c;结构简单&#xff0c;造价低等优点&#xff0c;但缺点是使用寿命短&#xff0c;光效较低展厅设计中常使用于走道和其他部位。 2、卤钨灯 充气白炽灯填充气体中含有…

【数理统计实验(三)】假设检验的R实现

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

【linux中cd指令使用】cd进入与退出路径

【linux中cd指令使用】cd如何进入与退出路径 1、cd进入指定路径&#xff0c;比如我要进入下面这个路径中去运行setup.py文件&#xff0c;如果我不跳转到该路径下直接运行&#xff0c;会报错找不到该文件 cd空格路径&#xff0c;即可跳转到该路径 cd /public2/xxx/tiny-cuda…

鸿蒙不再适合JS语言开发

ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开发者可以以更简洁、…

Pytorch入门-Transforms

文章目录 ComposeToTensorNormalizeResize 在PyTorch中&#xff0c;transforms是一个用于图像预处理和数据增强的模块&#xff0c;通常与torchvision库一起使用。torchvision提供了大量预先定义的transforms&#xff0c;它们可以方便地应用于图像数据&#xff0c;以进行预处理或…

突破内网限制,自由访问 NAS:网络穿透方案大合集! | 开源日报 No.199

anderspitman/awesome-tunneling Stars: 12.2k License: NOASSERTION awesome-tunneling 是一个列出 ngrok 替代方案和其他类似 ngrok 的隧道软件和服务的项目&#xff0c;重点是自托管。 主要面向自托管者和开发人员。提供注册域名并将记录自动指向运行隧道的服务器。自动设…

疯狂数钞票H5游戏

移动端微信h5 <template><div class"container" id"container"><div class"regBag"></div><div class"moneyBox"><transitionv-for"(item,index) in showImgList":key"index"…

这个班要不还是别上了吧。

先不提代码写得对不对。咱就是说&#xff0c;打印语句都出不来&#xff0c;搞个chuanchuan哟。 &#xff08;谁能给我解释一下。。&#x1f643;&#xff09;

Linux命令-cupsenable命令(启动指定的打印机)

说明 cupsenable命令 用于启动指定的打印机。 语法 cupsenable(选项)(参数)选项 -E&#xff1a;当连接到服务器时强制使用加密&#xff1b; -U&#xff1a;指定连接服务器时使用的用户名&#xff1b; -u&#xff1a;指定打印任务所属的用户&#xff1b; -h&#xff1a;指定…

芯片架构设计及其作用

芯片架构设计是芯片流片前很重要的一个环节&#xff0c;俗称pre-silicon&#xff0c;芯片架构设计的好坏&#xff0c;决定了芯片产品的质量&#xff0c;决定了芯片产品是否易用&#xff0c;决定了芯片产品的性能&#xff0c;决定了芯片产品在市场上是否具有持久性。芯片生产是个…

MySQL的常用函数

MySQL函数 聚合函数时间函数字符集函数数学函数其他函数 聚合函数 函数名说明COUNT()统计个数SUM()总和&#xff0c;不是数字没有意义AVG()求平均值&#xff0c;不是数字没有意义MAX()求最大值&#xff0c;不是数字没有意义MIN()求最小值&#xff0c;不是数字没有意义 group …

公众号怎么转移主体

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;长期以来&#xff0c;由于部分公众号在注册时&#xff0c;主体不准确的历史原因&#xff0c;或者公众号主体发生合并、分立或业务调整等现实状况&#xff0c;在公众号登记主体不能对应实际运营人的情况下&#xff0…

Android Selinux详解[五]--新增hal服务标签相关

在工作过程中&#xff0c;SElinux常用的有以下几个文件可用于新增标签 可用于加标签的文件名含义对应的声明文件名(一般会声明的地方&#xff0c;根本上放哪里都可以)file_contexts给 文件/目录/节点 新增标签file.tegenfs_contexts给节点新增标签&#xff0c;与上一个不同的是…

matlab+yalmip调试问题指南

很多同学在应用matlab编写程序过程中会遇到各种报错信息&#xff0c;本文整理了部分应用yalmip及求解器优化过程中遇到的常见部分问题及实用解决办法&#xff0c;供大家参考&#xff0c;更多报错及解决办法会持续更新&#xff0c;谢谢关注&#xff01; 序号问题/方法报错详情1…

反极域控制篇(二)

好的&#xff0c;上一篇介绍了如何破掉极域的控网&#xff0c;这期说说如何退掉锁屏。 分三种情况&#xff1a; 一、投老师的屏幕 点击最左上角的按钮&#xff08;就是能下拉选项缩放显示什么的那个&#xff09;&#xff0c;选择最中间的选项&#xff0c;然后点旁边的鸟什么图…