放眼全局,立足本地:分布式团队的秘诀

分布式团队和远程办公室不会消失。但是它们是否能成为新兴敏捷开发文化的一部分?我们认为可以。

Dan Radigan 作者:Dan Radigan
浏览主题

敏捷开发最初是为集群团队或实际位于同一办公室的团队设想的。与“向开发团队和开发团队内部传递信息最高效、最有效的方法是面对面交谈"的观念保持一致,早期的敏捷开发团队旨在聚在一起工作。

但如今,大多数企业都有几个分布式团队。这不仅仅是一种趋势,也非常实用。分布式团队可以全天候处理项目,还可以在竞争较弱的市场中找到杰出的人才。(更不用说,不存在令人头疼的调任,很容易留住人才。)但是,分布式团队并非完美。对于许多分布式团队来说,很难采用面对面互动的敏捷开发实践。

分布式软件团队面临的其他挑战:

  • 跨时区协调
  • 当每个人都不在同一个办公室时建立融洽的关系
  • 在不同的发展文化之间进行协作
  • 当两个团队同时在线仅几个小时(或更短)时,安排会议或非正式对话

这些都是真正的问题。但不是无法解决的问题。我们来看一些有助于弥合本地和远程办公室之间距离差距的策略,以及帮助缓解其他潜在问题的想法。

如何组建全球团队

良好的软件架构决定了模块化设计,因此可以采用同样的方式组织您的团队。每个办公室在开发单一技术方面都应该自给自足,这样可以最大限度地减少与其他时区团队的协作量,并确保整体自主性。如果一个项目确实需要不同地点的团队参与进来,他们可以专注于自己的集成点和 API。

代码审查也起着重要作用。由于人们在不同时间上网,因此通过在办公室之间分发代码知识,支持和维护变得更加容易。如果团队不在线时出现生产问题,另一个办公室可以轻松介入以支持和解决问题,这就要归功于他们从跨团队或跨地点代码审查中获得的专业知识。

建立融洽的关系

在任何项目中,尤其是敏捷开发计划,在整个团队中保持稳固融洽的关系都很重要。人际关系可以建立信任,最大限度地减少错过的期望,简化自我组织并提高士气。在您所在的办公室里,花点时间去认识团队中的每个人。而且,尽可能对远程办公室中的共事人员采取同样的做法。人际关系很重要。人际关系越强,与这些同事的关系和与其他同事的关系同样密切的可能就越大,而不是来到陌生地方、也没有关系良好的同事。

专业提示:

在 Atlassian,每位新员工都会在我们的内部 Confluence 实例(Atlassian 的内容协作工具)上发布“简介博客”。该博客从专业和个人(爱好、兴趣、家庭等)方面介绍了新员工,确实有助于弥合办公室之间的差距。作为人,我们彼此了解得越多,我们作为团队合作的力量就越强。

最重要的是,没有什么能取代面对面的会议。每个办公室的团队成员都会受益于定期的面对面时间,包括视频会议和访问远程办公室。

Zoom 等视频会议工具有助于弥合团队之间的差距,尤其是对于分布式敏捷开发团队来说。但是,依赖 Zoom 的团队应注意某些限制。

  • 视频会议通常只提供很短的沟通窗口,而在同一个办公室工作,能够很好地了解他人的世界:挑战、成功和机遇。
  • Zoom 在解决间歇性网络问题方面做得很好。尽管如此,有时办公室之间可能会出现网络问题,这可能会使视频和音频不稳定或难以理解。
  • 大多数人仍然认为 Zoom 视频会议是预定时间。营造一种使用视频聊天进行自发随意对话的文化需要时间。另外,使用 Slack 之类的即时消息传递工具快速提问。

为帮助缓解一些视频会议问题,鼓励团队成员每周进行一对一视频聊天。这些聊天无需特别正式,有助于以随意的方式推动知识共享。队友可以利用这些机会建立融洽的关系,更好地协作。

请记住,语气、语音和姿势在沟通中起着重要作用。面对面时间可以帮助团队以更高的保真度认识远程同事,这反过来又能够让未来的视频会议更加有效。

无论是房子还是产品,您都需要定义愿景并勾勒出战略主题。可以将主题视为组织范围内的重点领域。在接下来的一个季度、六个月、一年中,您想关注哪些方面?您想把时间和资源花在哪里?性能、用户体验、安全性、新的竞争特性(有人喜欢吗?),还是所有这些的组合?

我们是怎么做的:

借调是指在新的工作岗位或地点的临时任务,从几周到一年不等。它们不仅是在整个团队中建立融洽的关系和传播文化的有效途径,也是员工体验不同文化的好方法。

建立统一的发展文化

团队可以通过四种简单的方法来简化跨地域的工作并共享共同的开发人员文化:

  • 在所有地区过度沟通决策
  • 最大限度地减少设置开发环境的阻力
  • 明确定义完成
  • 为提交有效的缺陷报告创建准则

我们来详细说一下。

首先,从同地办公转向分布式文化,沟通变得更加困难。第一个挑战是训练团队明白,在做出决策后,需要传达决策。这听起来可能很简单,但很容易忘记!通常,重要的决策是在走廊对话、非正式的当地团队会议或由个人做出。另外,很容易将小决策视为不重要。

事无巨细,件件沟通,直至两个办公室妥善达成一致。

做出决策时,要让每个办公室的每一位成员都了解具体决策,最好还能清楚决策背后的原因。不要使用电子邮件。这样太容易丢失重要信息。应使用 wiki 之类的内容管理系统,便于团队全体成员轻松浏览更新内容(并通过电子邮件或 Slack 群聊工具获得更新通知)。此外,您还可使用 Slack 为个人和团队创建一些渠道,用于传达和查看更新。如果让团队成员处理过时信息、遇到障碍,然后再提出问题,则会造成延误,由此导致团队付出的代价比主动分享信息要多得多。

专业提示:

在 Atlassian,我们使用 Atlas 在各个团队之间共享项目和目标的更新。我们会通过每周摘要电子邮件或 Slack 收到更新通知。这有助于我们的团队开诚布公地进行沟通,就工作的相关情况达成共识,同时也解答了以下问题:

  • 工作内容
  • 为什么呢?
  • 工作负责人员
  • 工作进展

其次,在整个团队中保持一致的开发环境使协作和跟踪事务变得更加容易。花时间创建一个简单的“入门”指南,并通过尽可能自动化设置来缓解第一天的摩擦。

第三,在办公室之间工作时,围绕“完成”定义的明确标准可以更轻松地管理期望值并在团队之间建立融洽的关系。对完成的严格定义消除了工作中的模糊性。例如,在发布涉及多个团队的版本时,请明确说明完成的含义:已编写代码、已创建拉取请求、已审查代码、已测试代码并已将代码合并到相应分支中。

最后,分布式开发意味着出现问题时,并不是所有人都在线。为缺陷报告和疑难解答提供明确的指导方针,团队中的任何人都可以更轻松地跟踪事务。代码审查和良好的自动化测试还可以共享有关代码库的知识,使受影响的团队能够进行修复,并验证更改不会产生任何意想不到的副作用。因此,没有一支团队会成为障碍。

最大限度地利用黄金时间

每位摄影师都知道“黄金时间”,也就是日出和日落前后是拍摄精彩风景照片最有效的时间之一。分布式软件团队的黄金时间是本地和远程团队同时在各自的办公室工作。所有团队都在办公室时,现在是例会的好时机。

对于在不同时区共享工作的团队来说,例会是传递接力棒的好时机,这样刚上线的团队就可以从另一支队伍停下来的地方继续。而且,通过视频会议保持例会可以轻松提问和加快速度,这样一来,会议结束后所有人就可以开始工作。

有时办公室相距太远,以至于会议会给一个团队带来某种形式的痛苦。(凌晨 5 点起床和另一支队伍开例会?呃...不要,谢谢。)轮换会议时间,这样它就会成为一种共同的负担,而不是让远程团队持续承受不正常作息时间——这一定会摧毁士气。例会时密切监控整个团队的参与度。如果存在过度的压力,或者团队没有从中获得很多收益,团队成员将开始不再参与,停止倾听或分享。而且,例会不一定是每天的会议。每周与远程团队开几次会,然后利用其他几天在当地开例会。同样,例会也不一定是早上的例行活动。不管是一天中的哪个时间,只要对每个参与者来说都方便,那就是一天中最好的时间。

每个团队都是分布式的

在分布式组织中,现实情况是每个团队都是远程的。所有团队都需要适应并学习如何在办公室之间共享工作、有效沟通以及在不同地区培养一致的文化。最有效的团队不只是让远程办公室符合总部的文化,因为他们知道每个办公室都可以从其他办公室那里学到一些东西。他们寻求在所有地点寻找和分享成功实践。他们秉持共同文化的理念,而不是对抗文化。

因为另一个现实是这些团队时不时也会变成分布式团队。成员出差就需要离开办公室,偶尔在家工作可以帮助员工更好地平衡工作与生活。同时兼顾结构和透明度的团队可以更有效地扩展。如果项目扩展到办公室以外,文化就会随之做出对应的调整。