2020年7月30日,星期四

使用Azure DevOps运行敏捷开发冲刺

在上一篇文章中,我们讨论了一些基本知识 使用Azure DevOps进行团队合作 -特别是不需要成为开发工作重点的想法。正如我上次提到的,在这里的内容和代码中,我们拥有各种使用Azure DevOps中的Boards功能的团队-除了我们的开发团队之外,架构师和平台/基础架构团队还管理他们的项目工作和每周工作在服务中。

DevOps当然是对的 虽然主要针对开发人员,但对于使用sprint或迭代进行敏捷开发的团队来说,还有一些很棒的功能。在本文中,我们将深入研究诸如冲刺板,燃尽图和累积流程图之类的工具-所有极有价值的工具,至少在团队成员摇摆不定时,可帮助团队衡量其工作并不断从sprint到sprint。使用它们。 

首先,让我们考虑一下动机。

为什么这样我们在没有Azure DevOps的情况下生存了很长时间! 

Many 要么ganizations have development teams who are getting by with approaches they've used for a long time. 的re are a series of inefficiencies and guesswork that are somewhat invisible, and just accepted as "this 是 as good as it gets". Symptoms of this include:
  • 项目经理不断要求更新 
  • 同事,甚至团队中其他开发人员的定期打扰
  • 难以解释为什么要进行更改
  • 进度估计数缺乏明确性
  • 不了解团队生产力是提高还是下降
Azure DevOps不是解决这些问题的唯一方法,但是它 确实 提供应对这些挑战的平台,它无疑为您带来了很多繁重的工作。一旦团队以某种方式工作,事情就开始流动 周围 系统中的工作项-减少对话和中断以使人们的工作保持同步的需要,因为系统中有很多答案。这甚至扩展到尝试避免对团队(或Slack或其他聊天工具)中的同事执行ping操作,而改为在带有@mentions的Azure DevOps工作项目的注释中进行更多对话-此对话稍后可能对参与者很有用或其他。站起来变得更有效率,并且剩余的对话具有很高的价值,而不是事务性的“何时使用X完成?”输入问题。 

第1步-创建一个项目并选择您的流程(例如敏捷或Scrum)

的 first thing you'll need of course, 是 an Azure DevOps project created using the methodology you prefer. DevOps gives you four main types, but you can customize these to add your own (notice the last two items):

如果您不熟悉这些类型,我建议:
  • Basic非常适合非开发或非常简单的工作,并且任务分类很少(在撰写本文时仍在预览中)
  • 敏捷和Scrum是最常见的 
  • CMMI仅适用于“高形式”开发 
主要区别在于工作流状态(例如,“新的”,“活动的”,“已解决的”,“已关闭的”,“已删除,用于敏捷”,但使用“已批准”和“已承诺用于Scrum”,其中开发团队必须“承诺”在此sprint中执行这些任务)以及用户是否故事用于计划中。 The 选择一个过程 DevOps文档中的“页面”是您的指南。

的 next step 是 to enter your work items into the system. Usually you'll break these down into user stories 要么 features, with tasks underneath. I'm going to skip over this bit because it's relatively simple once you've created the first one, but the 添加和更新工作项 页面提供指导。 敏捷的主要原则之一是创建总体工作积压(不断发展),然后在进行时将其分配到迭代/冲刺中。 您将产品积压工作用于整个程序或项目,并将sprint积压工作用于每次迭代。 

的 whole world of backlogs and boards in Azure DevOps 是 quite deep - see 三种积压案,两种类型的董事会 作为一个很好的入门,但是请记住,您不必使用所有功能。 

第2步-设置团队能力并设置冲刺

Once you have an overall product backlog, we're ready to start thinking about chunking the work into individual sprints. I show some of the most important next steps in the video below. 的 first minute of the video in particular shows:
  •  定义团队能力 -告诉系统每个团队成员每天有多少小时
    • 这对于DevOps计算团队在特定时期内可能完成的工作量的能力至关重要。如果您没有告诉它有多少小时可用,那么如何进行预测呢?您还可以设置每种活动类型的金额,例如设计,开发,部署,文档,测试等。
  • 使用预测工具将工作分配给下一个冲刺- 积压视图 通过预测在可用时间内有多少工作可以帮助您将工作分解为迭代/冲刺。将项目拖到sprint中以进行确认。
    • 想象一下,您有2 x 20小时的任务,而您有10 x 4小时的任务。显然,这里要完成的任务数量有很大的不同-预测工具可以通过在冲刺将要结束的位置在任务列表中画一条线来帮助您看到这一点-从而帮助团队做出决定冲刺  
    • In the video I show how adjusting the "velocity" parameter (how fast the team are working) changes how much gets done - you see the line changing position in the list of tasks. 的 velocity number 是 是 something you tweak over time using data from Azure DevOps
从那里,我展示了在DevOps中运行sprint的各种其他功能-董事会的使用,更新任务等:


的 video actually covers 许多 在sprint中工作的不同元素,而不仅仅是初始设置。以下是我们在视频中看到的摘要:


因此,希望视频和评论传达了使用Azure DevOps进行开发sprint的一些关键原则。那我们可以使用的一些工具呢?

的 burndown chart

燃尽图表是Azure DevOps中更正式的“燃尽趋势报告”,是帮助管理冲刺的经典工具。它为团队提供了相对于当前冲刺计划的进度视图,指示事情是提前还是落后于进度。这是我们的一个项目/冲刺的真实燃尽示例,其中对一些指标进行了注释:












的 blue area represents work still to be completed, and the grey line indicates linear progress from start to end of the sprint. Comparing the two helps show where you are against plan. You can use either 剩余时间 要么 工作项数 代表剩余的作品,前者通常更有意义。 

的 sprint above 确实n't have non-working days configured, so that would be a nice improvement to show a more accurate picture. 

有关燃尽图的更多信息,请参见 配置和监视sprint消耗.


的 Cumulative Flow Diagram

的 CFD 是 a fantastic tool once your team has been working for a period. It helps you understand how work flows the process, in particular:
  • 周期时间-项目平均处于活动状态的时间(即从某人开始处理该项目的时间到完成时间)
  • 交货时间-物料的平均端到端时间(即从物料创建到完成的时间)
我将以下幻灯片用作我们其中一个项目的CFD的示例:

这是一个有助于解释某些要素的图表:

 

有关累积流程图的更多信息,请参见 累积流量,提前期和周期时间指导。

概要

Azure DevOps可以真正推动开发团队实现更多目标。值得注意的是,一些好处来自围绕系统中的工作项集中更新,讨论和问题-而不是单独进行讨论并且有些脱离上下文(例如在团队中对同事进行ping操作)。这并不意味着 所有 交流是通过这种方式发生的,但是朝这个方向的微妙动作可以极大地帮助您。 

除此之外,还需要满足以下先决条件才能获得好处:
  • 确保将项目任务(工作项)输入到系统中,并估算每个任务的工作量
  • 定义一系列迭代(冲刺)以将项目分解为多个时间段
  • 定期更新任务上的“剩余工作量”
  • 使用预测和分析工具来不断改进
希望这是有用的。如果您没有阅读有关DevOps电路板基础知识的第一篇文章,请访问以下网址: