什么是“群居”?


42

我听说过在敏捷或极限编程中提到的蜂拥而至。它似乎是配对的补充。

到底是什么 什么时候应该使用?你怎么做得好?


@CodeWorks:我在Google上进行的搜索几乎没有产生任何相关结果,但是都没有一个明确的答案。如果那里有一个规范的答案,那么一定要在这里发布。
杰伊·巴祖兹


战略视频游戏“星之剑”中有一条配音线,蚁人/螳螂/蜂巢人在您发出研究命令时说:“我们正在the大整个实验室。” 我一直以为那是一种极具讽刺意味的降落之作。
艾里克·雷彭

Answers:


43

想法是团队中的每个人都同时处理同一个故事。直到每个人一次都专注于一项任务,直到完成为止,而不是每个人都专注于不同的任务。然后,他们继续进行下一步,在此进行共同努力。

这有助于团队在冲刺结束前努力完成故事。通常,团队完成了所有故事的80%,但没有一个完整。这比完全完成80%的故事没有用,因为未完成的故事对最终用户没有任何价值。当团队中的每个人一次专注于一个故事时,完成故事就容易了。这就是蜂拥而至的动机。

这里有一些困难。例如,质量检查不能总是在构建(甚至设计)之前就对其进行测试。在这种情况下,您应该尽早建立一个设计,然后QA可以针对该设计而不是实际实现编写测试(最初失败)。


+1。有趣。您在实践中看过这项工作吗?
CodeART 2012年

2
另一种说法是“正在进行的工作越少越好”,对吗?
杰伊·巴祖兹

1
@CodeWorks是的。在我目前工作的地方,我们已经使用它取得了一些成功。这是一种非常有趣的开发方式,因为它是面向功能的。每个人都在同时努力实现相同的目标,因此我发现它可以很好地促进团队合作。
Oleksi 2012年

1
@JayBazuzi是的,非常。不过,获得全团队的支持也很重要。
Oleksi 2012年

9
@CodeWorks,一点也不。实际上,它可能会增加它。因为每个人都在一起紧密合作,所以减少了阻碍。当出现问题时,至少团队中的某人知道如何解决,并且由于得到了他们的充分关注,因此能够立即解决。另外,上下文切换通常不利于您的生产力。只要问你CPU。:P
Oleksi 2012年

10

编组只是指多个人共同努力完成一个任务或故事的事实。以我的经验,这不是您经常执行的操作。

通常,我们团队的每个成员都从事不同的任务和/或不同的故事。如果某人落伍了,或者希望早日完成任务或故事,那么其他人将停止从事其他任务,并“热心”完成任务,这意味着他们都共同致力于一个任务或故事,直到完成为止完成了。

最近,我们有少量的故事,这些故事有些枯燥,乏味。我给团队一个小的激励(比萨饼)和截止日期(一天结束)以完成工作,因此他们蜂拥而至,并在一个下午结束了至少几天的工作。他们尽早完成了工作,然后又撤回了工作,然后每个团队成员又回到了他们正在进行的工作中。他们得到了免费的午餐,我的工作很早就完成了,因为它很枯燥,所以工作可能会拖延,而团队则领先于他们的冲刺。双赢。

“成群结队”不过是“嘿,让我们帮助您”的幻想。


这似乎与其他答案完全不同。您是在说“当有特殊的紧急需求时,请所有人参与其中”。@Oleksi说:“在计划开发周期时,最好让每个人一次执行一项任务,而不是让每个人并行执行一项单独的任务。” 两种定义都是合理的,而且都是有用的做法,但是他的票数是4倍,所以我假设他的回答反映了最广泛接受的定义。
杰伊·巴祖兹

@Jay Bazuzu:无论每个人都作为冲刺计划的一部分来执行单个任务,还是随着需求的增长而自然发生,定义都几乎相同-每个人都共同完成一个任务。
布莱恩·奥克利

我认为您的答案在这里非常关键。被“接受”的另一个答案是“什么”。但是您的方法似乎可以解决。
Ape-in​​ago 2014年

2

群集实际上是敏捷性的中心概念。这不是“有问题时”要做的事情。最简单的编组形式是指团队协作处理项目(故事),并使其完成。核心概念是“退出开始,然后开始完成”。换句话说,不是每个开发人员都独立处理故事,而是团队将精力集中在有限的一组故事/任务上,从而更快地完成每个项目。可以将其视为单线程系统和多线程系统之间的差异。如果一个用户案例有10项必须完成的任务,并且每个周期为8个小时,假设没有任何复杂性,那么一位开发人员可以按顺序执行每个任务,并在80个小时(约10天的冲刺时间)内完成该故事。每天8个开发小时)。如果两个开发人员拆分任务并同时处理它们怎么办?用这种方法可以在一周内完成相同的80个小时的工作。添加第三个,您现在可以看到它可以在3到4天内完成。

可以通过以下几种方式进行分组:

  1. 结对编程(两个开发人员并排坐在一起来处理代码,一个是编写代码的“驱动程序”,另一个是导航器,牢记长远的方向并有助于同时进行代码审阅。
    1. 配对工作:开发人员和测试人员同时从事同一工作,一项编码和另一项测试,编写自动化等
    2. 像我上面提到的那样形成群体,这很常见。通常,团队成员会编成故事,但是每个人都用这种方法拥有各自的任务。
    3. 暴民编程:整个团队一次专注于一个故事(甚至任务)。

向每个开发人员讲故事的团队往往有太多的“正在进行中的工作”或WIP,并且常常有很多故事开始但没有完成。这是一个反模式,不是最佳实践。

蜂拥而至的团队往往拥有较少的在制品,而完成的故事则更多。因此,这是敏捷实践的核心。


1

以下有关InfoQ的文章介绍了一种群集方法:

  • 团队使用mob编程完成大部分编码任务
  • 团队的一部分或单个团队成员通常会在很短的间隔内分裂并加入团队
  • 每个人都做任何事情(没有角色)
  • 团队不使用估算值,WIP始终为估算值,不需要站立或类似的仪式

阅读文章以获取详细说明。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.