Communication Patterns in Remote Team

Problem

How to communicate in a software delivery team to make sure:

  • Everybody is aligned
  • Feedback loop is short
  • People have focused time

Context

  • Cross-functional team
  • Full remote with overlapping time zones
  • Communication tools available:
    • Slack (chat)
    • Asana (project management tool)
    • Google Meet (synchronous meeting)
    • Gmail (email)

Solution

Slack

  • Urgent questions only
    • Examples: you are stuck, and you can't do anything else without relevant context switching
  • Avoid direct messages
    • Even for direct questions, use the team channel as this irradiates information
    • Examples: clarify a requirement which is blocking a user story
  • No tagging
    • Use "@ person", "@ channel", "@ here" only for urgent topics
    • Examples: production incidents, you need an answer within an hour
    • Team members are expected to skim through the team channel every couple of hours to triage and reply
  • Channels follow a convention
    • [department]-[team-name]
    • Examples: #tech-bunny
  • Messages follow a convention
    • The first line is the summary
    • If asking a direct question, put people names on top
    • Examples: "[Go-live: countries timeline] Hey Nick, Are we good to launch in Italy after France?"
  • Single source of truth
    • OK to have dedicated channels for roles, but some noise is better than overspecialized channels
    • Have a dedicated channel for external stakeholders to ask for help

Asana

  • Definition of done
    • Single source of truth for what needs to be done
    • Crystallize any decision-making
    • The above holds for both product and tech initiatives
  • Important, but not urgent
    • Use Slack for urgent communication
    • Team members are expected to skim through the notifications twice a day to triage and reply
    • Bring back decision-making from Slack and meetings to the Project Management tool
  • Every initiative has its on board
    • This board clarifies what has been done and what is left to do
    • Tickets are organized in 3 sections: problem definition, analysis, delivery
    • Delivery section can be broken down into multiple sections, one per go-live
  • Team delivery board
    • It visualizes the work in progress or soon to be picked up (1-2 weeks)
    • 4 columns: in-refinement, next, in-progress, done
    • When ready to be refined, a ticket from an initiative board, is added to the team delivery board
    • Every ticket is assigned to a person
    • One person can't have more than 1 ticket in progress

Google Meet

  • Only for synchronous collaboration
    • Examples: initiative kick-off, retrospective
  • Use the right tool
    • Examples: Tuple for pair programming, Miro for drawing
  • Reduce recurring meetings
    • Examples: move user story refinement to async, is standup really needed?
  • Keep meetings short and focused
    • Smallest audience possible
    • Organizer is responsible for time keeping
    • Expected outcomes and agenda in meetings invites
    • Everybody's calendar is up to date, so anyone invited to a meeting can change the date-time if needed

Gmail

  • Only to communicate with people outside the company

Notes

Everybody needs focused time, managers too

  • Decision-making requires focus
  • Bad decisions by an engineering manager are more harmful than those made by an engineer
  • Sorry Paul Graham

Repetition is key

  • Have 1 goal at time for the team
  • Use repetition in written and verbal communications to remind what the current goal is
  • This simplifies decision-making and prioritization at any level

Credits

Thanks to David Swallow, who insisted for no direct Slack tagging in our team. We were skeptical, now we love it.