I've done a lot of posts and talks about how we work together at GitHub. The high-level discussion about how we manage to operate without managers in a 60% remote, 240-employee company is pretty interesting to me.
Just like code, though, sometimes the high-level is too high-level. Just show me the code, dammit. Sure, you work asynchronously, but what does that actually mean?
So, here's a look at most of the communication that happened at GitHub on one random recent day: February 4, 2014.
The vast majority of everything we do happens in chat. We feel that reading text is better communication than having meetings, so we use chat a lot. You'll drop into chat for everything from deploying github.com, to getting help with your health insurance questions, to pasting your best animated gifs, to collaborating and troubleshooting bugs in real-time with your entire team.
Team is an internal app that we've built for high-level communication in the company. What are people working on today? or What shipped today? are questions that Team hopes to help answer. Think of it as an internal Twitter and blog for other employees in the company.
As you can see, it's a mix. That's the point. We want some of this to be about work, of course, but sometimes it's just nice to hear about what our coworkers are working on, or what their families are up to, or just have a quick conversation about something that happened in the industry that day. None of this is mandatory; it's just a way to get a handle on what's going on in the company.
Email is totally different per person, since we do so much through github.com and everyone can set up their notifications differently.
Something I did want to point out is that there was only one email sent out to the entire company at large: it was an email about next summer's all-hands summit.
Even that one email is fairly uncommon; we tend to use Team and github.com more for announcements, specifically because we can limit them by team (i.e., mentioning @github/designers or just a single @holman in an issue, for example). Recipients can also mute the thread once they're no longer interested in the discussion. Emails sent to everyone in the company have a tendency to turn into a disaster, where everyone replies-to-all and the train falls off the track. We avoid that by using different tools that let us have more control over the discussion.
It's no surprise that, at GitHub, we use GitHub to build GitHub. We dogfood our product constantly. We're also in the unique position of being able to be fully certain that every single employee has a GitHub account, which means we can use GitHub for everything from code to press releases to employee equipment provisioning to discussion of techno music.
We use GitHub a lot. Here's how:
So that's how we communicate. After the people we hire themselves, I think the next important aspect of our communication is the tools we use on a daily basis. In the event a particular tool doesn't work for us, we'll move on to something else or build our own.
It's worth thinking about this stuff frequently. Are you still working well together today, even though you're double the size than six months ago? Are you happy communicating with your team, or does it kind of make people angry? Angry's not cool. It's not the eighties anymore. It's the nineties, and all this matters.