In The Science of Asynchronous Collaboration, CEO and Co-founder of Quod AI Herve Roussel shares his thoughts on the practices to enable effective remote collaboration among engineering teams.
As the world emerges from the lockdown, organisations are rethinking their approach to the future of work. Social distancing measures have demonstrated the importance of a company’s dev team to operate with flexibility, but made the challenges of virtual collaboration among engineers even more glaring.
In The Science of Asynchronous Collaboration, CEO and Co-founder of Quod AI Herve Roussel shares his thoughts on the practices to enable effective remote collaboration among engineering teams.
This talk was presented during the Effective Engineering Collaboration in the Age of Remote Working webinar, hosted jointly by Quod AI and SGInnovate on 1 July, 2020.
Slack + Zoom = Remote solved… Right?
The Limitations of Real-time Collaboration
How to communicate thoughtfully
Optimizing the cognitive learning path
Watch the full recording of the talk
With so many tools on the market made for collaborative working, remote collaboration seems easy enough. Just get the team to use Slack and Zoom, and voilà! Remote synchronous communication settled, right?
Well, the engineering leaders of some of the top tech companies would disagree.
In the words of Jason Fried, Co-Founder and President at Basecamp:
“Group chat is like an all-day meeting with random participants and no agenda.”
As quoted from The Remote Manifesto by Sid Sijbrandij, Co-Founder & CEO GitLab:
“Don't take someone from their work (if you don't have to).”
And as a study by Microsoft reports:
“Disruptions fragment developers’ workdays, allowing them to only spend little time focused on their coding tasks (...) This increases frustration and tensions in the team.”
Engineers prioritise having control over their day. For productive work to happen, there should be minimal interruptions.
“By lowering the barrier to initiate communication, the hidden side effect is that Slack has the quiet capacity to exponentially increase communication overhead. Resulting in much more voluminous, lower quality communication.”
— Alicia Liu, VP of Engineering at Nava PBC
Real-time communication through messaging apps tend to result in greater stress, frequent interruptions, and higher inefficiency. Low quality communication slips through too easily, and it is immensely difficult to disconnect.
Synchronous |
Asynchronous |
❌ Constant interruptions & context switches ❌ Knee jerk responses ❌ Information scatter |
✅ Deep work ✅ High quality responses ✅ Recorded answers |
For effective engineering collaboration, we need thoughtful, written communication.
Here’s the problem: developers are terrible at written communication. In fact, the number 1 pet peeve among developers, at 74.5% according to HackerRank’s 2019 Developer Skills Report, was badly written documentation.
If documentation—that is prepared communication—is bad, just imagine how much worse communication is, when it is not prepared for! That is why real-time, synchronous collaboration faces limitations.
But asynchronous collaboration is not easy.
After all, as we emphasize again, asynchronous collaboration still requires thoughtful, written communication.
“High cognitive load would likely translate to slow learning and poor code quality.”
— Dr. Mikhail Filippov, Chief Scientist at Quod AI
When communicating something to someone, you are essentially setting up a learning path in their brain. Thus, you should aim to maximise germane load and reduce extraneous load in order to communicate thoughtfully and effectively.
We’ve all had conversations which made us wonder, where is this going? This problem comes from not knowing what is actually relevant - as a result, we dump a load of information on the people we are speaking to.
To communicate thoughtfully, we want to go straight to the point and, essentially, aim to shock. Ask yourself, “Why does the person I’m speaking to need to care about (the problem)?”
So instead of spending too much time on unnecessary information ("So you remember how last month, we enabled the logs because there were some slow queries? Logs are now overflowing the disk…”), engage the end-goal and state the problem from the first sentence ("The database is down.").
Communication, especially between teams, can be confusing. We need to personalize our communication. Ask a lot of questions to the person you are communicating with, to better understand what their current understanding of the problem is - that way, you can quickly grasp where the boundaries of their cognitive map is, and fill them in quickly.
Most of us would have experienced the situation where we receive an email or a Slack message stating, “It’s not working” - completely missing in context. It is important to ensure that you contextualise - for instance, when coding, make sure to use comments. With comments, the context is already attached automatically! And if it’s a message on Slack, include the links - to your JIRA tickets, issues, or Confluence pages.
During large group meetings, it is easy to get sidetracked even if there is a goal in mind - there is a lot of information irrelevant to the main conversation, or not necessarily relevant to everyone attending the meeting.
In those situations, remember to focus and take control of the conversation. Break apart the side conversations to another wiki page or github issue, or simply postpone it to another meeting.
In summary, to get the most out of asynchronous collaboration, you need to pay attention to how you deliver new information. You want to:
🤯Shock
📛Personalize
📍Contextualize
🧘♀️Focus
This talk was presented during the Effective Engineering Collaboration in the Age of Remote Working webinar, hosted jointly by Quod AI and SGInnovate on 1 July, 2020.
© 2020 by Quod AI