1. 如果用scrum做sprint plan,怎么确定user story和task
总结一下,关于题主的几个问题的回答。
如何分析 user story?
User story 是从用户的角度提出问题并找到解决方案,进而分解出可执行的 task。假设要给 SegmentFault 加个问卷调查功能,那么就从用户怎么使用问卷入手,从各种交互中最终发现页面具体逻辑和需求,确定需要哪些页面、如何交互、如何呈现,从而完成分解。
山寨的说,user story 的源头就是 stakeholder 想要的需求/功能,分解过程就是这个需求怎么用,最终结果是这个需求怎么做。其实,这跟传统的写产品文档没有区别,只是能让整个产品团队都明白需求点的来龙去脉,也许能够更加调动所有人的积极性。
就算是设计 api,也可以用 user story,把 api 调用者当做 user 来理解就好。
要是不清楚怎么设计 user story 也没关系,能分解的需求就是好需求,定出 task 才是关键。
如何分解 task?
Task 的关键是要有一个明确的完成条件,比如实现 XX api、实现 YY 功能点等。如果程序员负责写单元测试用例的话,通过单元测试是一个比较明确的完成条件。
要足够的小,不能超过 16 小时,或 2 ~ 3 天吧,目的是为了能够很好的控制延期风险。
不要太小,半天或一天做个需求最舒服了,太小的话计划所花费的成本可能都大于实现需要的成本了,不划算。
Sprint 计划会议如何开展?
先准备好差不多成型的需求,如果没有,让少数一两个人先细化的差不多。
开会讨论需求,让所有人清楚。有 user story?很好,讲给程序员听,让大家参与进来。没有 user story?无妨,反正明确了需求让程序们做就是。
分解 task,确保每个人的 task 足够明确可完成,不是很大,没有失衡。
可能要开几次会议,每次发现有任务分解不下去的时候终止会议,下去解决细节问题,等解决后再开会。
2. 什么是用户故事
用户故事(user story)是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素:
1. 角色:谁要使用这个功能。
2. 活动:需要完成什么样的功能。
3. 商业价值:为什么需要这个功能,这个功能带来什么样的价值。
用户故事通常按照如下的格式来表达:
英文:
As a , I want to , so that .
中文:
作为一个, 我想要, 以便于
举例:
作为一个“网站管理员”,我想要“统计每天有多少人访问了我的网站”,以便于“我的赞助商了解我的网站会给他们带来什么收益。”
需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述。
Ron Jeffries的3个C
关于用户故事,Ron Jeffries用3个C来描述它:
卡片(Card) - 用户故事一般写在小的记事卡片上。卡片上可能会写上故事的简短描述,工作量估算等。
交谈(Conversation)- 用户故事背后的细节来源于和客户或者产品负责人的交流沟通。
确认(Confirmation)- 通过验收测试确认用户故事被正确完成。
3. 不要盲目执行任务,要领会用户故事(如何写用
很多敏捷团队将故事点和复杂度点作为同义词来使用,他们相信这比使用“小时”更好,因为这些点数是基于复杂度和相对大小的。
Mike Cohn则表示,使用故事点来描述特性的开发复杂度是不对的,应该使用工作量。 Mike提到:我发现太多的团队认为,故事点应该基于用户故事或特性的复杂度,而不是开发所需的工作量。
这些团队通常将“故事点”定义为“复杂度点”,这看起来不错,可能还更精确,但却是错误的。故事点与特性的复杂度无关,而与开发特性所花费的工作量有关。
Mike给出了一个有趣的例子,他比较了舔1000枚邮票和做一个简单的脑外科。Mike认为,抛开复杂度上显而易见的不同,这两件事应该有相同的故事点数,因为它们需要花费相同的时间。
在Scrum Development group上有一个类似的讨论.Adam Sroka提到,为了能够比较稳定的测量velocity,团队需要测量的数据能够接近所耗费的时间。因此,故事应该基于相对工作量,而工作量应与花费的时间有关。
但是,这并不意味着应该以小时为单位进行估算。许多人已经发现以小时为单位的估算是一种浪费,而且也不准确。
Mark Levison说到:估算本身就是浪费。使用小时进行估算则更加浪费,人们花费几个小时去讨论细枝末节,还不如赶快开始工作。
虽然使用点数进行估算也是浪费,但为了可以使项目的进度更加易于预测和透明,用户故事应该大致上有相同的大小,再加上一定的差异。对于大多数(成熟或者不成熟的)团队来说,这并不容易,因此他们需要故事点。
Jeff Sutherland也比较了故事点与基于小时的估算。Jeff说:估算故事点比小时更快速、更好也更经济,高效团队会完全弃用任何以小时为单位的估算,因为他们认为这是一种浪费,只会拖慢他们。
Mark Kilby提出,应该确保那些新接触敏捷的人不会假设故事点=工作量=小时。Mark认为,在决定故事点时,虽然工作量很重要,但还需要充分考虑不确定性。
Mike则同意点数和小时之间不存在等价关系。 Mike还说,或许我们可说,点数是工作量、风险和不确定性的函数,SP=f(E,R,U)。
(如果你愿意,也可以把其中一个称为复杂度,但这不重要。)重要的是,点数是关于工作量的估算。
风险、不确定性、复杂度、未知因素以及其他相关的事,仅当他们会影响工作量时才应被包含进去。如果某些事确实很复杂,但却不会影响实现特性所花费的时间,那么复杂性就不应该对估算产生影响-这才是故事点。
因此,故事点应该基于工作量,而工作量应该考虑风险、复杂度、未知因素等等。关键是明白故事点要回答的问题。
就像Mike说的:估算的目的是回答如“什么时候才能完成?”或者“到某天为止我们可以得到多少功能?”这样的问题。如果这确实是真的,那么不管用什么单位、什么途径进行估算,都必须是与时间相关的。
4. 什么是用户故事地图
10条件可以为以下是一个用户故事的样例,并置运行处理日期
2.3按确认后要一个确认对话框.7 (约束)2.16表可以按每个支付网关生成一份
2.15 (约束)2.4卡号栏目后面要留输入标注(本)(异)来区分本地卡和异地卡的空间
2.17 (约束)2:
故事2运行处理退款请求故事(优先级.16 可以退款明细列表 2.11 (约束)2:低)
估算.4输入卡号提供3个4位输入第4个不限位数的分割输入,防止误操作
2:开发时间 2周
2:银行退款处理状态退款请求日期段
2:商户退款处理状态退款请求日期段
2.18 (约束)2.10条件可以为.1 获得某时间段银行的退款明细 0.5天
2.16表中.8 (约束)2.3处理后退款明细记录状态要变更为运行已处理状态.22 (约束)2.2 分页显示某时间段银行的退款明细列表.14表头里须含查询条件信息及总笔数与金额信息
2,提供选择退款记录 2.3可以选择部分或全部明细进行退款处理
2,部分支付网关除基本栏目外,如果要求输入卡号要输入2遍复核
2.14 分页显示按条件获得运行已处理的退款明细列表 1:高 技术风险.19 (约束)2.3 运行处理退款 2天
2,利于校对
2.21可回退的退款交易必需是还没有被财务退过款的.4 (约束)2.21 可以把运行已经处理过的退款交易回退给运行部门重新处理.3可以补充退款信息卡号.16数据组织成execl表格格式
2、姓名信息.10 可以按条件获得退款明细列表 1天
2.5 (约束)2.13 (约束)不需要查询还在申请状态的退款
2.5天
2.6 (约束)2.9 (约束)2.12 (约束)2.5天
2.5天
2.16表可以按每个商户生成一份
2.20 (约束)2。
2,一些栏目可以配置打印与否
5. 用户故事的概念
用户故事 (user story)是从用户的角度来描述用户渴望得到的功能。
一个好的用户故事包括三个要素: 1. 角色:谁要使用这个功能。 2. 活动:需要完成什么样的功能。
3. 商业价值:为什么需要这个功能,这个功能带来什么样的价值。 用户故事通常按照如下的格式来表达: 英文: As a
需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述。 Ron Jeffries的3个C 关于用户故事,Ron Jeffries用3个C来描述它: 卡片(Card) - 用户故事一般写在小的记事卡片上。
卡片上可能会写上故事的简短描述,工作量估算等。 交谈(Conversation)- 用户故事背后的细节来源于和客户或者产品负责人的交流沟通。
确认(Confirmation)- 通过验收测试确认用户故事被正确完成。 。
6. 什么是用户故事
用户故事(user story)是从用户的角度来描述用户渴望得到的功能。
一个好的用户故事包括三个要素: 1. 角色:谁要使用这个功能。 2. 活动:需要完成什么样的功能。
3. 商业价值:为什么需要这个功能,这个功能带来什么样的价值。 用户故事通常按照如下的格式来表达: 英文: As a
需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述。 Ron Jeffries的3个C 关于用户故事,Ron Jeffries用3个C来描述它: 卡片(Card) - 用户故事一般写在小的记事卡片上。
卡片上可能会写上故事的简短描述,工作量估算等。 交谈(Conversation)- 用户故事背后的细节来源于和客户或者产品负责人的交流沟通。
确认(Confirmation)- 通过验收测试确认用户故事被正确完成。
7. 如果用scrum做sprint plan,怎么确定user story和task
咨询公司当然像忽悠啦,不像才是奇怪呢~以前 StackOverflow 做调查,ThoughtWorks 是程序员最不喜欢的公司(貌似不是之一),可见一斑~下面我来根据自己山寨的 scrum 理论和实践经验,稍微谈一下自己关于的理解,不一定正确。
由于我并不是对着任何教材或官方文档来回答问题,所以请不要吐槽我说的哪里不够标准哦~Scrum 过程的特色在于它是个可控的黑箱。每个 sprint 都是相对固定的时间长度,一旦 sprint 开始,其中的需求就不应该发生改变,时间结束的时候应该能产出计划好的产品。
从外部看来,一个 sprint 就像一个黑箱一样,给固定的输入,得到固定的输出。为了可控,scrum 的 sprint 计划会议极为关键,要点是保证需求稳定不发生改变。
计划会议的最终目的是让 scrum team 中的每个人都明确自己的工作量和依赖关系,而要确定这些东西的大前提就是需求足够的清晰明确,且 sprint 结束前都不发生任何变化。不变是 scrum 能像黑箱一样运行的大前提,试想,如果需求做到一半砍掉了或者发生很大的内容变化,以前开会定下的各种 task 就会发生根本变化,导致计划成为废纸一张,sprint 也就执行不下去了。
因此,一般 sprint 计划会议最终决策的时候,必须有 stakeholder 过来拍板认可,也算是在这个场合里给大家一个准信,确保这些 task 像泼出去的水一样不会再变了。需求稳定还只是一个要点,最终还是要落实到 task 上。
从需求到 task 其实还隔了几道墙,一方面并不是所有的需求都是真实需求,有时候 stakeholder 自己可能都不清楚自己想要什么,另一方面从产品概念到实现也不是一目了然,需要把各种细节提前约定清楚才行。这里面就需要引入一些需求分析的工具。
User story 是帮助需求分析的一个工具,各种敏捷方法貌似都比较推崇这种需求分析的方式,这种方式跟写一个需求分析文档或产品设计文档都没什么本质差别,只是个工具。从题主的描述来看,我猜想你所在的团队之前应该从未使用过 user story 来分析需求,所以感觉会比较虚也比较难以分解成 task。
如果咨询顾问们无视你们之前的需求文档/产品文档的风格硬要用 user story 来套的话,有可能他们犯了形而上的错误。能够清晰的分解成可执行、短小的 task 的需求才是好需求,无论用 user story 还是拿友商的同类产品直接山寨还是老板某天洗澡突发的灵感,只要是个 stakeholder 想要做且细节都定义清楚了的需求都是好需求。
反之,如果无法分解,那就是需求分析的失败了,管你什么炫酷的方法都是浮云。像题主所说,一个任务给 200 或 300 的估计,那就是需求完全没有细化的结果,要知道那个数字的单位一般是小时,而一个 task 一般都不要超过 16 才对。
一旦需求分析完成,分解 task 就应该水到渠成才对。如果技术团队因为技术细节不确定而无法分解需求,那么暂停会议,会下讨论清楚再来。
分解 task 本身没什么好说,跟传统的分任务一回事,其中 scrum 比较可取的一点就是那个 planning poker,每个人把自己的时间当做资源,通过 planning poker 这种比较好玩的方式分配自己的时间直到时间耗尽。当然啦,这种形式本质上就是想确保每个人都能均衡的完成任务,免得出现瓶颈,如果达到同样的目的采用其他方法排任务也无妨。
转载请注明出处育才学习网 » 怎么写userstory