Work From Anywhere: How Geographically Distributed Teams Succeed
When hiring top talent, why limit your search to specific locations?
It’s not just a new trend: employees value the flexibility to work remotely, from home or elsewhere. In a competitive job market, especially in job seeker’s market, companies will benefit if they’re willing to be more flexible with respect to location.
With the right tools and the right nudges, it’s possible to ensure that distributed teams are as effective as co-located teams.
“Every day I read a new article about some company whining about how hard it is to hire technical staff. Invariably it turns out that they’re only looking for people within a commuters distance of their office. I refuse to feel sorry for such companies.” — David Heinemeier Hansson
For two years, I’ve run a team of about 20 people. They’re dispersed across locations and time zones and can work remotely as frequently as they wish. It’s not the most complex organization, but after dealing with challenges and optimizing the process, our success inspired me to summarize lessons learned in the form of simple recommendations.
These practices proved successful in ensuring that we worked cohesively, that team members felt well integrated, and that little information was lost in spite of the distance. It ultimately came down to understanding what matters to people and how to nudge them the right way.
These recommendations are valuable to any team, distributed or not.
Make Communication Visible
Ideal team communication is timely, casual, and complete (content, tone, body language, etc). Plus, it reaches the right people.
Open office plans are a good hack to improve team communication. When people have easy access to others, conversations happen in-person, don’t require a formal appointment or agenda, and aren’t deferred frequently. Very importantly, you can influence others around you without making them direct recipients of the message, allowing more people to “stay in the loop.”
How do you replicate for distributed teams?
It’s easy to think of a series of do’s and don’ts and to write a “handbook” specifically telling people how to communicate with a geographically distributed team. Whereas a top-down approach like that may work, I’ve seen it fail more often than not. Instead, you should invest in tools and practices that result in communication that is naturally more visible.
What worked for me:
- Real-time communication in chat rooms (e.g. Slack groups)
- Frequent use of video-conferencing (for every meeting, including daily stand-ups)
- Collaborative tasks that can be carried asynchronously (e.g. code reviews)
It takes practice and it takes some time to get communication right. It certainly helps to lead by example and make such practices part of the core of your culture.
Capture Knowledge Organically
Every piece of knowledge that’s captured creates an opportunity for experts to stop repeating their answers every time they hear frequently asked questions. Plus, there are many reasons why experts may be absent from work, leaving team members who can get stuck with questions no one can answer.
In traditional office settings, it’s safe to assume that coworkers will be consistently in the office and at an arm’s reach when questions come up. For geographically distributed teams, that’s not a safe assumption.
Documenting processes is awfully boring and keeping it up to date is virtually impossible. Luckily, knowledge capturing can happen as a byproduct of other things done right.
Valuing working software over comprehensive documentation is one of the principles at the core of the Agile Manifesto.
Software development teams should invest in comprehensible code and unit tests. Assuming that it can be read, nothing documents an application more accurately than the source code. Unit tests document expected behaviors in terms of inputs and outputs. Unit tests and source code offer complementary perspectives and precisely express what working software is expected to do and how it is implemented to do that.
Similar to how unit tests complement source code, test case specifications complement functional requirements documents.
Requirements documents are overrated. They’re good representations of roadmap items (e.g. in the form of user stories or use cases) and therefore important in prioritizing work. They’re good conversation starters and a fine place to document consensus when the work is actionable.
However, for teams that emphasize responding to change over following a plan, detailed functional requirements get outdated quickly. They are nearly worthless by the time working software has been delivered and accepted.
If you choose to maintain any form of written documentation, invest in what is less likely to change and more likely to be reused.
Prefer comprehensive test case specifications over comprehensive functional requirements. Use user stories or use cases to set up a roadmap and to guide conversations, but keep them lean and treat them as disposable, if you can.
There is immense value in knowledge that is captured in collaboration tools.
Chat conversations, code review comments, and all the information in ticket tracking systems are good examples. Choose tools that encourage interactions, are intuitive to browse, and pack powerful search and reporting features.
Formalize Structure Sparingly
I favor minimalistic processes; however, some formal notions are important for distributed teams. Teams should make an effort to build consensus around them early on and continue to evolve over time.
At a minimum, team members should standardize:
- Common document templates (user stories, bugs, etc)
- Project structure and code style
- Change management
With a basic framework like this, you can be certain that, no matter where they are, team members will always be properly situated in relation to their work and that of their coworkers’. Some formality will make it quicker for team members to find answers to important tactical questions such as:
- What should I do next?
- What am I expected to deliver?
- How should I organize deliverables?
- How may I deliver the work?
Promote a Uniform Culture
More important than anything else, instill culture across all locations.
Treat all team members equally, in respect to their professional development and performance management. Avoid making distinctions between full-time employees and contractors. And don’t overlook this.
Insist in a couple of regular meetings where team members can showcase their work (e.g. sprint demos) and where they can share their perspective on process and culture (e.g. sprint retrospectives). Make sure that as many people have access to the content of these meetings as possible. Don’t overly restrict the list of invitees. Remember stakeholders. Inviting “everyone” and making attendance optional tends to work well. Use video and record these meetings for those who cannot attend.
Consider creating one recurring “loose-agenda” meeting around knowledge sharing, where team members can volunteer topics to be discussed, presentations to be given, videos to be watched, books to be studied, etc, and do it over video.
This meeting is an excuse for folks to see each other regularly and “geek out.” Let people decide on topics and focus on what they are passionate about. The less formal the better. Not the typical corporate Lunch-and-Learn.
Synchronize team outings. We go to restaurants, bars, bowling, and movies so our team members get to know each other outside of work settings. There is something magical that happens when distributed teams do similar things around the same time. Everyone can relate to each other’s experiences. It’s an experience in the physical world everyone gets to share with those they would normally only interact virtually.
Sponsor Rapport Building
People are many times better at collaborating remotely after they’ve had a chance to see each other in person at least once. It’s worth investing in opportunistic site visits for key employees to build rapport with remote co-workers.
Trips are expensive and it’s unlikely that everyone will have the opportunity to see each other in person. For that reason, it’s very important to invest in tools that increase the odds that team members will engage in 1-on-1 conversations frequently. Again, with emphasis on video, that means ensuring that employees have access to:
- Reliable Internet connection
- Modern video conferencing software
- High-quality hardware (computer, webcam and headset)
Effectively working with geographically distributed teams requires trust, an inclusive culture, and a few nudges. Follow the steps I’ve outlined and you’re well on the way towards having a healthy, flexible, and attractive team that candidates will need to join. Whereas many “best practices” may feel unnatural in the beginning, these ideas have helped me and my teams make adopting them almost second-nature.
A Note Of Caution
As I learned from our lawyers and accountants, there is something called State Nexus Policies that every employer should be aware of. These policies might limit how geographically distributed your team can truly be before there are negative consequences to your business. When considering internationally located candidates, it’s even more important to be aware of possible unwanted consequences as in some cases they can be devastating.