敏捷Scrum开发7大事件之2:团队Sprint产能规划
By 老彦
《系统之美》
前言,在本文中,我们将从以下几点了解关于产能规划的话题:
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
产能规划Capacity Planning,是指意估算和计算敏捷团队在每个迭代中能贡献的有效工作能力。 有两种广泛使用的产能测量单位,在我的其他文章中有时会写成“能力规划”。
</p>
<p>
1. <strong>故事点</strong>,这是一种计算速度的简单方法(最后6到10个Sprint接受的故事点的平均值)。 并针对下一个Sprint提交与速度匹配的用户故事。我个人建议另一种方法,用小时数进行产能规划。
</p>
<p>
2. <strong>小时</strong>,我个人建议按小时进行产能规划。 在本文中,只以这种方式进行产能规划。 它提供了更好的可见性和准确性。 还有许多其他好处,将在本文后面讨论。<br /> 这里我们通过计算下个Sprint的可用时间。计算敏捷团队的可投入的生产力(PO和SM除外)。<br /> 将详细讨论谁来计算它,在本文中考虑哪些因素。
</p>
</div>
</div>
</div>
</div>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
这种技术非常容易计算和规划团队产能。 下面逐步说明,可以通过维护Excel来进行产能规划。
</p>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
<span class="dt-highlight">Step 1 – 计算Sprint持续时间</span>
</h4>
<p>
以天为单位计算Sprint持续时间,确定Sprint的开始日期和结束日期。 为了说明这一点,进行了为期2周的Sprint,从星期三开始,到星期二结束。 正在为Sprint 2进行产能规划。<br /> 下图代表10天的2周Sprint –日历。 分散在三个物理日历周中。 在本文的其余部分中,将用这个颜色说明来解释,其中<br /> 黄色=上一个Sprint<br /> 绿色=当前的Sprint<br /> 蓝色=未来Sprint
</p>
<p>
<img class="alignnone size-large wp-image-1049" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-2.png" alt="" width="336" height="328" srcset="https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-2.png 336w, https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-2-300x293.png 300w" sizes="(max-width: 336px) 100vw, 336px" />
</p>
</div>
</div>
</div>
</div>
</div>
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_single_image wpb_content_element vc_align_center">
</div>
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
<span class="dt-highlight">Step 2 – 计算团队成员的可用性</span>
</h4>
<p>
假设有7个成员团队,4个开发人员和3个测试人员,此处不计算SM和PO,因为不需要在产能规划中计算他们的产能
</p>
</div>
</div>
</div>
</div>
</div>
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_single_image wpb_content_element vc_align_center">
<figure class="wpb_wrapper vc_figure photoswipe-item photoswipe-wrapper"><img class="alignnone size-large wp-image-1051" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-10.png" alt="" width="256" height="216" /></figure>
</div>
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_single_image wpb_content_element vc_align_center">
</div>
</div>
</div>
</div>
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
<span class="dt-highlight">Step 3 – 确定成员的投入比率 %</span>
</h4>
<p>
现在确定共享资源(如果有),如果没有共享资源,将计算每个100%分配给此Scrum团队的资源。 假设有一个测试者(测试者3),他在两个团队之间共享,在这个示例中,他分配给该团队的50%产能。
</p>
<p>
<img class="alignnone size-large wp-image-1048" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-1.png" alt="" width="388" height="216" srcset="https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-1.png 388w, https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-1-300x167.png 300w, https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-1-355x199.png 355w" sizes="(max-width: 388px) 100vw, 388px" />
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
<span class="dt-highlight">Step 4 – 计算每天的标准时间</span>
</h4>
<p>
如果我们假设每个人每天有8个小时的总分配时间,则共享资源将每天为该团队分配4个小时的时间。 对于10天Sprint,整个团队的最大总产能为520小时,每天具有52小时,包括共享测试人员。 在此sprint持续时间内,每个人有10天80小时,分配50%的共享资源有40小时。
</p>
</div>
</div>
</div>
</div>
</div>
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_single_image wpb_content_element vc_align_center">
<figure class="wpb_wrapper vc_figure photoswipe-item photoswipe-wrapper"><img class="alignnone size-full wp-image-1040" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Capacity-Planning_1-1024x350-1.gif" alt="" width="1024" height="350" /></figure>
</div>
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
</div>
</div>
<div class="wpb_column vc_column_container vc_col-sm-6">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
现在让我们看看日历中的情况如何
</p>
<p>
<img class="alignnone size-large wp-image-1041" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Capacity-Planning_2-1024x910-1.gif" alt="" width="760" height="675" />
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-12">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
<span class="dt-highlight"><b>Step </b><b>5 </b><b>– 考虑多种因素</b></span>
</h4>
<p>
<strong>1. 团队假期</strong>
</p>
<p>
标记整个团队的非工作日期。 国定假日等。
</p>
<p>
<strong>2. 计算个人不在工作上的时间</strong>
</p>
<p>
计算如果有计划请假或不在办公室的资源。
</p>
<p>
<strong>3. 不同的默认工作日小时数</strong>
</p>
<p>
有时候可能将个别团队成员作为例外,将默认时间从8小时更改为其他时间。
</p>
<p>
<img class="alignnone size-large wp-image-1045" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Default-Pic.png" alt="" width="735" height="270" srcset="https://www.agilewalker.com/wp-content/uploads/2020/04/Default-Pic.png 735w, https://www.agilewalker.com/wp-content/uploads/2020/04/Default-Pic-300x110.png 300w" sizes="(max-width: 735px) 100vw, 735px" />
</p>
</div>
</div>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
假设– 1月9日为团队度假,在这种情况下:从这张图片中我们可以看到,总产能和个人产能相应减少。
</p>
</div>
</div>
<div class="wpb_single_image wpb_content_element vc_align_center">
<figure class="wpb_wrapper vc_figure photoswipe-item photoswipe-wrapper"><img class="alignnone size-large wp-image-1047" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Holiday.png" alt="" width="735" height="284" srcset="https://www.agilewalker.com/wp-content/uploads/2020/04/Holiday.png 735w, https://www.agilewalker.com/wp-content/uploads/2020/04/Holiday-300x116.png 300w" sizes="(max-width: 735px) 100vw, 735px" /></figure>
</div>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
</p>
<p>
假设–开发人员1,开发人员2和测试人员1在三个不同的天计划休息一天。 通过应用我们可以从这张图片中看到的,总产能和个人产能会相应减少。
</p>
</div>
</div>
<div class="wpb_single_image wpb_content_element vc_align_center">
<figure class="wpb_wrapper vc_figure photoswipe-item photoswipe-wrapper"><img class="alignnone size-large wp-image-1050" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-8.png" alt="" width="760" height="294" srcset="https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-8.png 981w, https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-8-300x116.png 300w, https://www.agilewalker.com/wp-content/uploads/2020/04/Profile-Pic-8-768x297.png 768w" sizes="(max-width: 760px) 100vw, 760px" /></figure>
</div>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
</p>
<p>
如果开发人员3计划在1月13日进行半天工作,则计划产能将相应更改,如下所示
</p>
</div>
</div>
<div class="wpb_single_image wpb_content_element vc_align_center">
<figure class="wpb_wrapper vc_figure photoswipe-item photoswipe-wrapper"><img class="alignnone size-large wp-image-1046" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Half-Holiday.png" alt="" width="735" height="284" srcset="https://www.agilewalker.com/wp-content/uploads/2020/04/Half-Holiday.png 735w, https://www.agilewalker.com/wp-content/uploads/2020/04/Half-Holiday-300x116.png 300w" sizes="(max-width: 735px) 100vw, 735px" /></figure>
<p>
</p>
</div>
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-12">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
<span class="dt-highlight"><b>Step </b><b>6 </b><b>– 考虑团队所有人需要消耗时间的其他工作</b></span>
</h4>
<p>
考虑其他会议和敏捷仪式所需的时间。 下图显示了团队在每次仪式和其他会议上花费的典型时间。
</p>
</div>
</div>
<div class="wpb_single_image wpb_content_element vc_align_center">
<figure class="wpb_wrapper vc_figure photoswipe-item photoswipe-wrapper"><img class="alignnone size-large wp-image-1044" src="https://www.agilewalker.com/wp-content/uploads/2020/04/CapacityPlanning-1024x213-1.gif" alt="" width="760" height="158" /></figure>
</div>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
从产能中减少12.33小时。
</p>
</div>
</div>
<div class="wpb_single_image wpb_content_element vc_align_center">
<figure class="wpb_wrapper vc_figure photoswipe-item photoswipe-wrapper"><img class="alignnone size-large wp-image-1042" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Capacity-Planning_3-1024x280-1.gif" alt="" width="760" height="208" /></figure>
</div>
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-12">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
</h4>
<h4>
<span class="dt-highlight"><b>Step </b><b>7 </b><b>– 考虑专注因素</b></span>
</h4>
<p>
针对团队的专注程度进行计划,以便应对任何计划外的时间损失,同时记得每天8小时里的休息时间,临时计划内的会议,其他正式活动,培训,与专家的讨论等。为无法预料的事情保留专注因素。该值可以在75%到95%之间变化。产能时间 X 专注因素 = 最终产能。
</p>
</div>
</div>
<div class="wpb_single_image wpb_content_element vc_align_center">
<figure class="wpb_wrapper vc_figure photoswipe-item photoswipe-wrapper"><img class="alignnone size-large wp-image-1043" src="https://www.agilewalker.com/wp-content/uploads/2020/04/Capacity-Planning_4-1024x245-1.gif" alt="" width="760" height="182" /></figure>
<p>
<span style="font-size: 24px; font-weight: bold;">因此,Sprint 2团队的最终产能为318.32小时</span>
</p>
</div>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
<b>总结下7个步骤</b>
</h4>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-top vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-3">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="ult_pricing_table_wrap ult_info_table ult_design_5 ult-cs-gray ">
<div class="ult_pricing_table ">
<div id="info_table_features_wrap-4551" class="ult-responsive ult_price_features" data-ultimate-target="#info_table_features_wrap-4551.ult_price_features" data-responsive-json-new="{"font-size":"","line-height":""}">
<p>
<img class="alignnone size-large wp-image-1052" src="https://www.agilewalker.com/wp-content/uploads/2020/04/summary-1024x313.png" alt="" width="760" height="232" srcset="https://www.agilewalker.com/wp-content/uploads/2020/04/summary-1024x313.png 1024w, https://www.agilewalker.com/wp-content/uploads/2020/04/summary-300x92.png 300w, https://www.agilewalker.com/wp-content/uploads/2020/04/summary-768x235.png 768w, https://www.agilewalker.com/wp-content/uploads/2020/04/summary.png 1456w" sizes="(max-width: 760px) 100vw, 760px" />
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="wpb_column vc_column_container vc_col-sm-3">
<div class="vc_column-inner">
<div class="wpb_wrapper">
</div>
</div>
</div>
</div>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_row-o-equal-height vc_row-o-content-middle vc_row-flex">
<div class="wpb_column vc_column_container vc_col-sm-12">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<h4>
请注意
</h4>
<p>
这些值,百分比和小时数仅用于以上示例。 需要根据自己的需要和事实来确定。<br /> 1. 计算最适合项目的专注因素取值(75%-95%)。<br /> 2. 根据Sprint周期确定的Sprint持续时间。<br /> 3. 为开发人员/测试人员和Scrum团队中的其他任何角色(SM和PO除外)进行计划。<br /> 4. 在团队中按实际分配团队成员。<br /> 5. 类似团队假期,个人计划假期,部分投入时间等因素,且不仅限于这三个因素。<br /> 6. 根据您的时间表计算仪式时间,以及其他计划中的会议。<br /> 7. 在上面的示例中,有些计算并不完美,对于示例来说可以避免复杂化和过于精细。
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="wpb_raw_code wpb_content_element wpb_raw_html">
<div class="wpb_wrapper">
</div>
</div>
</div>
</div>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
在Scrum Master的协助下,Scrum团队可以在进行Sprint规划之前确定产能。 最佳时间就在针对任何特定Sprint的 <strong>Sprint规划之前</strong>,可以最直观的了解成员的休假计划或 相关Sprint仪式需要的时间。<br /> 各个团队可以更新其可用时间,Scrum Master可以帮助团队了解如何计算其个人能力。 Sprint规划之前,Scrum Master可以与团队进行30分钟的快速会议,据此计算和更新产能规划。 我的建议是在Sprint 规划之前的1或2天与团队一起计算Excel中的所有因素,当团队足够成熟以后,可以在很少的干预下自行完成。
</p>
</div>
</div>
</div>
</div>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p>
产能规划可以帮助团队评估团队能承诺和完成用户故事的范围,特别是当按小时估算产能并用个人产能和他/她分配的估算任务时间映射到已承诺的用户故事的任务时。团队可以识别在Sprint规划中承诺用户故事时会受到的限制条件。<br /> 之所以一直偏爱小时数而不是故事点速率的产能规划,是因为它可以通过简单地用天,假期,请假,其他时间,专注因子等数学运算来轻松计算可用小时数,从而获得团队产能。从技术上讲,这在用故事点速率时是不可能的。<br /> 其次,不能将故事(具有故事点)分配给单个成员,因为完成故事需要团队努力。要是在团队成员之间分发所有故事点!简直不敢想象。一个故事(无论故事点是什么)可以有多个任务(每个任务的工作量以小时为单位)可以轻松地分配给一个或多个团队成员,每个任务可以分配给每个成员。
</p>
<p>
总之至少包含这四条:<strong>更好的Sprint规划</strong>,<strong>提高了承诺可靠性</strong>,<strong>控制需求的蔓延</strong>,<strong>更合理的任务分配</strong>。
</p>
</div>
</div>
</div>
</div>
—
END
希望能在评论区学习到大家的经验和想法~
如果对相关内容感兴趣可以关注我的公众号:捷伴行Agile。会有更多更及时的内容与君分享。