快速且频繁地交付可工作的软件是敏捷开发的目标之一。Swarming 就是能够帮助敏捷团队实现这一目标的技术。那什么是 Swarming,Swarming 有哪些好处,该在何时使用,又该如何使用呢?
Vin D’Amico 在《敏捷团队通过 Swarming 取得巨大成功》一文中解释道,使用敏捷软件开发的团队可以在免去一些计划的情况下,发布更多软件,而且响应更为迅速:
他们快速地执行从计划到设计到编码到测试再到交付的敏捷流程,如此往复,直到软件达到客户预期目标为止。
敏捷团队为何响应如此之快呢?Vin 指出:
(…)好的团队都在用 Swarming。他们尽量在当下解决问题或者消除障碍。如果做不到,好,把它移到 Backlog 中,但不到万不得已不要这么做。
在《团队 Swarming 的 7 项策略》一文中,David Bernstein 解释了 Swarming 如何帮助我们建立一支专注并且能够解决复杂问题的高效团队:
进行 Swarming 时,整个团队针对同一问题集中在一起工作。这有助于大家相互了解,进而更好地合作。通常,团队需要经历从形成(了解彼此)、磨合(发现矛盾,化解矛盾)到最终运转(成为一支高效的团队)这几个阶段,所以请给每个人一点空间。
Swarming 的工作方式跟结对编程很像,都是让团队成员在同一任务上紧密合作:
跟单枪匹马地工作相比,看看一项任务是否可以由两个甚至三个人来完成。让两个人来做同一件事是有损失,但结对工作所带来的动力往往会将其抵消。记住,高效率的团队几乎总是结对完成任务的。
什么是 Swarming?几年之前, Yahoo 讨论组上曾有一次关于《 Swarming: 意义何在?》的讨论,InfoQ 也进行了总结。其中解释了 Swarming 的目的:“使团队专注于完成有业务价值的工作”,“尽可能让整个团队从一开始就参与到同一个用户故事中去,以此提升质量和一致性”。按照 Vin D’Amico 的说法,“简单来说,Swarming 是这样的行为——将大家召集到一起来解决问题或快速完成某个任务”。David Bernstein 这样定义,“Swarming 就是把整个团队聚在一起,专注地解决同一个问题”。
Oleksi Derkatch 描述了 Swarming 如何工作,以及它能带来什么:
它的理念是让所有开发者工作于同一个用户故事,而不是让每个开发者各自为战。它的目标是彻底完成更多的用户故事。彻底完成 80% 的功能总比各种功能都只完成 80% 要好。
Renee Troughton 解释了组织应该如何使用 Swarming 来构建更富创造性的团队。她在博客文章《业务的新时代》中写道:
这正是 Swarming 的用武之地。大部分组织就是将人员从一个项目抛到另一个项目,很少考虑个人兴趣。除此之外,他们也很少考虑这么做的真正速度以及与投资回报的关系。
为使工作更富成效,我们需要有激情的人,他们对待工作会像对待自己的孩子般专注。(…)应该允许对此有兴趣的员工报名参与,而且要立马放人让他们坚持到底。
你的团队在使用 Swaming 吗?对于快速频繁地交付软件,它是不是真的有帮助?
查看英文原文: How Swarming Helps Agile Teams to Deliver
感谢臧秀涛对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论