异步调用案例

In March 2020 our work related world changed drastically due to COVID-19. Previously our teams were mostly on-site and co-located. At the beginning of the lockdown in Germany though this all changed and we found ourselves in a completely new work environment where everyone was all of a sudden remote.

到2020年3月,由于COVID-19,我们与工作相关的世界发生了巨大变化。 以前,我们的团队大多在现场并在同一地点。 在德国禁闭初期,这一切都发生了变化,我们发现自己处于一个全新的工作环境中,每个人都突然变得遥不可及。

These significant shifts are scary. They bring a lot of uncertainty and shakiness into the work environment, but they also do present an opportunity to re-inspect and re-evaluate the way we collaborate and build software together in teams.

这些重大变化令人恐惧。 它们给工作环境带来了很多不确定性和不稳定性,但是它们也确实提供了一个重新检查和重新评估我们在团队中共同协作和构建软件的方式的机会。

I’m an engineering director responsible for multiple engineering teams at New Work. Over the last months I decided to go all-in on that opportunity with my teams, and to rethink and revise the way we work in this new remote situation in order to make the most of it. In this post, I will share with you everything I’ve learned about this topic in the past 6 months. I will talk about how we got there, what challenges we faced on the team and management side and how we re-adjusted multiple times along the way to find our new groove. Lastly I will try to give you my answer to the looming question of “Is it worth it?”

我是一名工程总监,负责New Work的多个工程团队。 在过去的几个月中,我决定全力以赴地与团队合作,并重新思考和修改我们在这种新的偏远情况下的工作方式,以充分利用这一机会。 在这篇文章中,我将与您分享过去6个月中我对该主题学到的一切。 我将谈论我们如何到达那里,在团队和管理方面面临的挑战以及如何在寻找新的机会的过程中多次进行重新调整。 最后,我将尽力回答“是否值得?”这个问题。

我们有一些远程体验,所以我们认为 (We had some remote experience, or so we thought)

I lied a bit in the introduction. Remote wasn’t completely new to us. Since 2017 I have at least one full remote team member in Augsburg and even though the rest of his team works in Hamburg, this already had a significant impact on collaboration in the respective team.

我在简介中撒了点谎。 遥控器对我们来说并不陌生。 自2017年以来,我在奥格斯堡拥有至少一名正式的远程团队成员,即使他的其余团队在汉堡工作,这也已经对各自团队的协作产生了重大影响。

You might ask yourself why we had this mixed setup with one remote colleague and the rest being on-site in the first place, so let me explain. Sometimes opportunities cross your path, that are hard to resist. After having worked with this team member as a freelancer, we knew that he was a perfect fit for the team. He made the team better in terms of expertise, brought something special to the team through his personality and instantly clicked very well with the rest of the personalities in the team. The only problem: He already had made his decision to re-locate to Augsburg from Hamburg (where our headquarters are located). It was a bit unusual in our company back then, but I decided to do a leap of faith and trust our ability to make it work and I haven’t regretted the decision a single time in the last 3 years.

您可能会问自己,为什么我们要与一位远程同事进行这种混合设置,而其余人员首先要在现场,所以让我解释一下。 有时,机遇横穿您的道路,这是难以抗拒的。 在与该团队成员一起担任自由职业者之后,我们知道他非常适合团队。 他在团队的专业知识方面做得更好,通过他的个性为团队带来了一些特别之处,并立即获得团队中其他个性的好评。 唯一的问题:他已经决定从汉堡(我们总部所在地)搬到奥格斯堡。 那时我们公司有点不寻常,但我决定进行一次信念飞跃,并相信我们有能力使其发挥作用,在过去的三年中,我没有一次后悔这一决定。

We had no grand plan on how to make this work, only a very simple process:

我们没有关于如何进行这项工作的宏伟计划,只有一个非常简单的过程:

  1. Continuously monitor and identify what doesn’t work anymore or is worth improving持续监控并确定哪些行不通或值得改进
  2. Adjust things as you go (ideally through small experiments)随时进行调整(最好通过小实验)
  3. If the change improves the situation, keep it and proceed to the next pressing issue. Otherwise come up with a new idea for the current issue.如果更改可以改善这种情况,请保留并继续处理下一个紧迫的问题。 否则,针对当前问题提出新的想法。

In a nutshell we happily tinkered our way forward.

简而言之,我们高兴地修补了前进的道路。

What we learned on the way is that information flows much more informal and faster when you’re on-site. It’s very easy to feel disconnected as a remote colleague, when the rest of the team is working on-site. While you could carve out the work so that it can be done in isolation from the team, we didn’t want to go down that path. We wanted him to continue to be an integral part of our daily work, not an appendix.

我们从此过程中学到的是,当您在现场时,信息的流动更加非正式和快捷。 当团队的其他成员在现场工作时,很容易感到与远程同事断开连接。 尽管您可以完成工作,以便可以与团队隔离地完成工作,但我们不想走这条路。 我们希望他继续成为我们日常工作不可或缺的一部分,而不是附录。

The first thing we did is making all our agile ceremonies (stand-ups, retrospectives, etc.) more remote-friendly. This mostly meant switching away from stickies and whiteboards to online-counterparts. We invested more in our JIRA setup, used Fun Retro for retrospectives and introduced a big TV / camera setup into the team space.

我们要做的第一件事是使我们所有的敏捷仪式(站立,回顾等)变得更加友好。 这主要意味着要从即时贴和白板转换为在线交易平台。 我们在JIRA设置上进行了更多投资,使用Fun Retro进行了回顾,并在团队空间中引入了大型电视/摄像机设置。

Next up, we made sure that every important decision and information was captured and made available in electronic form. We switched from informal exchanges to lightweight decision records and made meeting notes mandatory. While that felt like overhead at the start, very soon everyone started to appreciate the additional transparency into the team and also the ability to backtrack when a decision was made. While we started keeping ourselves informed via good old email in the early days, we soon switched to Confluence to have them in a more structured form and easier searchable.

接下来,我们确保捕获每个重要的决定和信息并以电子形式提供。 我们从非正式的交流转为轻量级的决策记录,并强制要求会议记录。 尽管开始时感觉像是开销,但很快每个人都开始欣赏团队的额外透明度以及在做出决定时能够回溯的能力。 当我们开始通过早期的旧电子邮件来保持自我通知的时候,我们很快便选择了Confluence,使它们的结构更加结构化且易于搜索。

In addition, we did put a lot of emphasis on pairing or even mob-programming on different topics in the team. So everybody slowly got used to paring via a screen sharing tool.

此外,我们确实非常重视团队中不同主题的配对甚至是暴民编程。 因此,每个人都逐渐习惯于通过屏幕共享工具进行配对。

Then something interesting happened. The video calls stayed sometimes open for the whole day, even though the onsite colleagues and our remote colleague weren’t necessarily pairing. This remote person had become a natural extension to the team and VC was our magic mirror into the respective worlds. It became also the place for a lot of our kitchen type of discussions.

然后发生了一些有趣的事情。 即使现场同事和我们的远程同事不一定配对,视频通话有时仍会整天开放。 这个遥远的人已经成为团队的自然延伸,而VC是我们进入各个领域的魔镜。 它也成为了我们很多厨房类型讨论的地方。

Rounding this up, we deliberately took turns also working from home. Originally it was meant to as an exercise to build remote empathy. The idea was that everybody should experience first hand the situation our remote colleague is in, to make him or her more conscious and aware of the challenges. This was a big AHA moment for many of us in the team, since we realised at some point that it doesn’t really matter so much where we physically are and that we could also produce great results when the team is not co-located.

总结一下,我们特意轮流在家工作。 最初,这是为了建立远程共情的练习。 这个想法是,每个人都应该亲身体验我们远程同事所处的状况,以使他或她更加意识到和意识到挑战。 对于我们团队中的许多人而言,这是一个重要的AHA时刻,因为我们意识到在某个时候,身体上的位置并没有多大关系,而且当团队不在同一地点时,我们也可以产生出色的结果。

That was back then. For more than two years we iterated progressively on this setup and moved and more into a remote(-ish) direction.

那是那时。 在两年多的时间里,我们逐步迭代了此设置,并将其移向一个遥远的(-ish)方向。

And then COVID-19 came. We thought we were well prepared …

然后COVID-19出现了。 我们认为我们已经做好了准备……

2020年3月,我们都离开了办公室 (In March 2020 we all left the office)

From then on everybody was working remotely.

从那时起,每个人都在远程工作。

Our now deserted office space
我们现在废弃的办公空间

We expected the transition to be rather smooth, but it wasn’t. The devil is always in the details.

我们期望过渡会相当顺利,但事实并非如此。 魔鬼总是存在于细节中。

  • For one thing, we had never been completely remote with the whole team. Some of us always stayed on-site.一方面,我们从未与整个团队完全遥不可及。 我们中有些人总是呆在现场。
  • We also didn’t stay remote for longer than a few days individually (except our member in Augsburg obviously).我们也没有单独待在远端超过几天(显然除了我们在奥格斯堡的成员)。
  • Until that point the rest of the company also was largely on-site oriented (even though we have other office locations and are used to having messenger chats and video calls)在那之前,公司的其他部门也基本上都是以现场为导向的(即使我们在其他办公地点,也习惯于进行Messenger聊天和视频通话)
  • Lastly and this is probably the biggest issue: Our views on communication were largely primed around a synchronous style of communication, the kind that you typically have on-site, but this style doesn’t scale well in a remote environment (as I try to explain later).最后,这可能是最大的问题:我们对交流的看法主要是围绕同步交流方式提出的,这种交流方式通常是您在现场使用的,但是这种方式在远程环境中无法很好地扩展(因为我尝试稍后解释)。

A lot of obvious things in retrospect, but more often than not, you don’t really see these kind of things when you’re in the field.

回想起来,有很多显而易见的事情,但通常来说,在野外时,您并没有真正看到这些事情。

The first weeks were plagued with technical issues. On the company side the VPN and bandwidth needed to be scaled up to match the demands of the full workforce working online. On the team side, some members only had a very slow internet connection at home or didn’t have a working room or even a working desk to begin with.

前几周困扰着技术问题。 在公司方面,需要扩展VPN和带宽,以适应整个在线工作人员的需求。 在团队方面,有些成员在家中只有很慢的Internet连接,或者根本没有工作室,甚至没有办公桌。

While the infrastructure issues on the company side were almost all fixed within roughly one to two weeks, it took us longer to improve the individual working setup, but within the first month we had most of the things sorted out and everyone could join a video call when necessary.

虽然公司方面的基础设施问题几乎都在一到两周内得到解决,但我们花了更长的时间来改善个人的工作环境,但是在第一个月内,我们整理了大部分事情,每个人都可以加入视频通话必要时。

但是…… (However …)

Interesting things happen when a messaging tool like Slack or Teams become the standard means to communicate with each other in a company. I think it boils down to basic human preferences to stick with what we know and then trying to preserve this in a new environment, while at the same time exploring the boundaries of this new environment.

当像Slack或Teams这样的消息传递工具成为公司中彼此通信的标准方法时,就会发生有趣的事情。 我认为可以归结为人类的基本偏好,即坚持我们所知道的,然后试图将其保存在新的环境中,同时探索这种新环境的边界。

What we observed in a nutshell is that a lot of teams (us included) tried to continue business as usual. Meetings became online meetings or video conferences. However they became much more frequent, because in general you have much more informal syncs outside of normal meetings than you are typically aware. You know the kind of interactions where two or three people quickly put their heads together and immediately dissolve afterwards. Also engineering managers had to adjust to a new world, where they didn’t see everyone in the team space anymore, which at least for some creates a sense of unease that they tried to mitigated by — you guessed it — more online meetings.

简而言之,我们观察到许多团队(包括我们在内)试图继续照常营业。 会议变成了在线会议或视频会议。 但是,它们变得更加频繁,因为通常来说,在正常会议之外,您进行的非正式同步处理比您通常所知道的要多得多。 您知道两种或三种人Swift集中头脑并随后立即消散的那种互动。 此外,工程经理还必须适应新的世界,他们再也看不到团队空间中的每个人,至少对于某些人而言,这产生了一种不安感,他们试图通过增加在线会议来缓解(您猜对了)。

At the same time the messaging tool started to become the wild west. When everybody is still figuring things out AND the rules of engagement are still unclear AND writing a message to someone or even calling someone without upfront notice is very, very easy to do, it’s bound to happen. Even worse, when someone immediately answers an expectation is silently formed: That it’s ok to ping everyone at any point in time and that you can expect a fast answer.

同时,消息传递工具开始普及。 当每个人仍在弄清楚事情的情况,交往的规则仍然不明确,并且向某人写消息甚至打电话给某人而没有事先通知时,这非常非常容易做到,这势必会发生。 甚至更糟的是,当有人立即回答期望时,默默地形成了:在任何时间点对所有人进行ping是可以的,并且您可以期望得到快速的回答。

This is pretty much the perfect storm for team performance. We humans have a very hard time with constant context switches and interruptions. Especially cognitive demanding work, requires uninterrupted slices of work. But the silent social contract has already been kinda established, that everyone can be contacted at any point and can answer as soon as possible. Unregulated messaging amplifies undesired interaction models. So if you’re in company where people just strolled by to your desk to talk with you without upfront notice, expect this behaviour tends to get more frequent in the messenger-backed working world.

这几乎是团队绩效的完美风暴。 我们人类在不断地进行上下文切换和中断的过程中非常艰难。 尤其是对认知的要求很高的工作,需要不间断的工作。 但是,已经建立了无声的社会契约,可以随时与每个人联系并尽快做出答复。 不受管制的消息传递会放大不需要的交互模型。 因此,如果您所在的公司只是人们闲逛到您的办公桌前与您交谈而没有事先通知,那么在信使支持的工作环境中,这种行为会变得更加频繁。

But it doesn’t end here, we came in the team to the conclusion that online meetings with a more than 3 people aren’t the same as presence meetings. There’s just too much to be missed in terms of visual and audio cues. Usually you only see the speaking person and depending on the tool you use, you can’t even see everyone in the team at the same time. Worse, online meetings really start to degrade when you don’t have a good meeting code of conduct, meaning when people start interrupting each other and the speaker camera jumps from person to person. We haven’t even talked about connection losses, audio delay, etc.

但这还不止于此,我们进入团队的结论是,与3人以上的在线会议与在场会议并不相同。 在视觉和音频提示方面,有太多东西值得错过。 通常,您只会看到发言人,而且根据您使用的工具,您甚至无法同时看到团队中的每个人。 更糟糕的是,如果您没有良好的会议行为守则,那么在线会议确实会开始退化,这意味着人们开始互相打扰并且扬声器摄像头在人与人之间跳跃。 我们甚至都没有谈论连接丢失,音频延迟等问题。

What was previously a meeting typically full with energy, easily can become a burden in this setup.

以前通常充满活力的会议很容易成为这种设置的负担。

那么该怎么办呢? (So what to do about it?)

From my point of view, you can easily break down what we did into 3 different stages.

从我的角度来看,您可以轻松地将我们的工作分解为3个不同的阶段。

These stages are:

这些阶段是:

  1. Taming the messaging tool (or reducing the load of notifications that colleagues face, while setting clear expectations)

    驯服消息传递工具(或减少同事面对的通知的负载,同时设定明确的期望)

  2. Introducing asynchronous collaboration in existing ceremonies (for instance rethink how stand-ups, design discussions etc. could be done asynchronously)

    在现有仪式中引入异步协作(例如,重新考虑如何异步进行站台,设计讨论等)

  3. Switching the default mode of the team to mostly asynchronous communication (and be very explicit on when to use synchronous communication)

    将团队的默认模式切换为大多数异步通信(并且明确何时使用同步通信)

Please note that this is not meant as a guide, recipe or how-to. These ideas worked for us, but they are context dependent and might or might not work in your organisation. At best try to view them as invitations for experiments on your side, in case you find them interesting.

请注意,这并不作为指南,食谱或操作方法。 这些想法对我们有用,但它们取决于上下文,并且在您的组织中可能有用也可能无效。 最好尝试将它们视为您身边的实验邀请,以防您发现它们有趣。

阶段1:驯服消息传递工具 (Stage 1: Taming the messaging tool)

The first thing we tried to wrap our heads around is how we could make better use of messaging internally, lowering the amount of notifications and making it more useful to all team members.

我们试图绕开头脑的第一件事是如何在内部更好地利用消息传递,减少通知的数量,并使之对所有团队成员更有用。

We use Slack at our company, but I guess the same challenges and solutions also arise in other tools like MS Teams.

我们在公司使用Slack ,但是我猜想在MS Teams等其他工具中也会遇到同样的挑战和解决方案。

Back in March 2020 we had a single private channel for our team, as well as multiple topic specific public channels. In the private one we happily @mentioned our colleagues, without thinking too much about it. Pretty much the equivalent of just asking over the monitor to one of your colleagues.

早在2020年3月,我们为团队提供了一个私人频道,以及多个主题特定的公共频道。 在私下里,我们很高兴地提到了我们的同事,却没有考虑太多。 几乎等同于将显示器问给您的一位同事。

We also posted nice-to-know updates, things we found funny and all sorts of other topics that weren’t necessarily interesting to all parts of the team. Especially gif-integrations have the tendency to get out of hand quickly (I’ve been guilty of that myself). Some of us felt, that they were drowning in notifications and started to mute all of them to get some rest. That’s not the place to be, if messaging place such an important communication role in your team.

我们还发布了令人耳目一新的更新,发现有趣的事情以及各种其他主题,这些主题对于团队的所有成员而言不一定都是有趣的。 尤其是gif集成易于Swift失控(我一直对此感到内gui)。 我们中的一些人感到,他们淹没在通知中,并开始使所有人静音以获取休息。 如果消息传递在您的团队中扮演了如此重要的沟通角色,那不是地方。

As a result we decided to split our private channel and introduced a new one called hangout, strictly for more social stuff. The idea was that we reduce the frequency of messages in the work related one, while the new one has no restrictions what so ever what kind of discussion is possible there. So the equivalent of the typical water-cooler talks you often have in the office.

因此,我们决定拆分我们的私人频道,并引入了一个名为hangout的新频道,严格来说是为了提供更多社交内容。 我们的想法是,我们减少与工作相关的消息的发送频率,而新消息则没有任何限制,因此在那里可以进行什么样的讨论。 因此,这相当于您在办公室经常进行的典型的水冷式通话。

At the same time we set the expectation that it’s totally fine to mute the hangout channel and no answer should be expected there. Who wants to join can chime in at their preferred time; who doesn’t, stays focussed on whatever he or she is doing.

同时,我们期望将视频群聊通道设为静音是完全可以的,并且那里没有人期待任何答案。 想要加入的人可以在自己喜欢的时间加入; 谁不做,就专注于他或她在做什么。

We also agreed that our internal team channel (the strictly work related one) never gets fully muted. What does “fully muted” mean here? Even in the work related channel, you have discussions where it’s totally fine to chime out and ignore new incoming messages for an ongoing discussion. This is where threads in Slack shine. They allow bundling messages together and can be selectively muted. Another rule of thumb was introduced: Structure communication by threads AND that it’s fine to mute a thread, if someone felt he can’t contribute to the discussion in that particular thread.

我们还同意,我们的内部团队渠道(与工作密切相关的渠道)永远不会完全静音。 “完全静音”在这里是什么意思? 即使在与工作相关的频道中,您也可以进行讨论,在其中进行讨论并忽略新传入的消息完全可以。 这是Slack中的线程闪耀的地方。 它们允许将消息捆绑在一起,并且可以有选择地静音。 引入了另一条经验法则:通过线程进行结构通信,并且如果有人认为他无法在该特定线程中进行讨论,则可以静音该线程。

What naturally came next following one of our March retrospectives was the first discussion about the expectations around @mentions in our work related channel. That you can easily ping people in modern messaging tools, doesn’t always mean that you should. And even if you’re inside a strictly work related channel, this doesn’t necessarily mean that all content posted there is urgent and has to be reacted on immediately.

在我们三月份的一次回顾之后,接下来自然是关于工作相关频道中有关@mentions的期望的第一次讨论。 您可以轻松地在现代消息工具中对其他人执行ping操作,但这并不总是意味着您应该这样做。 即使您在与工作相关的严格渠道内,也不一定意味着发布在该渠道上的所有内容都是紧急的,必须立即做出React。

Back then we answered this with a single “rule of of thumb” (instead of a formalised protocol): Before hitting enter, be certain that you do want people to be aware and react immediately. When this is true, use @mentions. Otherwise delete the “@” from the message.

那时,我们用一个“经验法则”(而不是正式的协议)回答了这个问题:在按Enter键之前,请确保您确实希望人们意识到并立即做出React。 如果是这样,请使用@mentions。 否则,从消息中删除“ @”。

Some of us started to be very explicit in their messages themselves about their expectations on reactions:

我们中的一些人开始在自己对自己对React的期望的信息中非常明确:

  • For instance messages starting with FYI are simply that, for your information. No reaction necessary (but discussions are possible in the accompanying thread)

    例如,以FYI开头的消息就是为了供您参考。 无需做出React(但可以在随附的主题中进行讨论)

  • Others started with Input needed on … until … to give the asynchronous exchange guardrails through a due date.

    其他人从Input needed on … until …开始Input needed on … until …通过截止日期提供异步交换防护栏。

But it also works into the opposite direction. In our public channels, the ones where we provide support to other teams in our company, we very early started to use emoticons to indicate feedback. So for instance

但这也朝相反的方向发展。 在我们向公司其他团队提供支持的公共渠道中,我们很早就开始使用表情符号来表示反馈。 例如