I went to Agile Open NorthWest 2017 with the question "How can we make distributed teams awesome?" Here's what we came up with:
There are a bunch of known good practices to help distributed teams not suck too much. Doing them won't get us to "awesome", but at least we can get up to "not sucky". So let's start by writing down these practices:
- Communicate a lot
- Don't let remote people be 2nd-class. Make everyone equally remote, even if some are in the same building.
- Chat room for all communication, even within an office
- Experienced people who don't need to learn as much are at less of a disadvantage when remote*
- Because remote pairing is more tiring, be deliberate about taking breaks.
- use Pomodoro
- Do your homework before coming to meetings, so you don't need to rely as much on awkward VTC communication
- Show up to meetings on time
- Don't let people get blocked on questions. If someone raises a question in chat, don't leave them hanging.
- Have the whole team mob for 1 hour to start the day, to get alignment on the day's work
- Synchronize time of work
- Meet face-to-face regularly. Have a budget to bring people together.
- Many companies save money by having people work from home. Direct some of that savings to equipment, travel, etc.
- Consider paying out-of-pocket to make remote more awesome, and then ask for reimbursement if it helps.
- Remember that patience online is short, and accommodate that fact.
- Create team agreements - they're at least as important as for teams that sit together
- Recognize the expression of Conway's Law: limited communications affect software architecture
- Telepresence robots can help. Make sure they are human size (short robots get treated like children)
- Retro often, with a relentless focus on the things that make remoting difficult
- Build the team
- Play games together remotely (poker, Halo)
- Friday beers in VTC
Yet-unsolved problems that generally make remote work suck:
- There is no good remote whiteboard
- Estimating remotely is particularly bad (plug for #NoEstimates)
- When tools/tech stop working right when we need them, we have a bad time
- It's hard to influence the org beyond the team / hard to influence culture
And then we looked at advantages to remote work / distributed teams - how they can be better than teams that sit together:
- 50 people can write on a Google Doc at once, while only a couple people can write on a whiteboard at once.
- Better ergonomics are possible. No crowding around a single screen.
- Remote breaks are real breaks. When you step away, no one can reach you. Go outside!
- You have access to a broader pool of talent.
- It increases diversity, even compared to the same people sitting together
- Enables a 24-hour development cycle
- Can accommodate people in new ways. For example, a person with a partial hearing loss can turn up their headphone volume, instead of asking everyone to remember to speak up.
- Can accommodate varying communication styles
We measure how awesome a team is with two questions:
- Are we delivering (steadily increasing) value?
- Are people happy?
*I don't think this is true, but it come up in the session, so I put it here in the list.