ZH

A Day of Communication at GitHub

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.

Chat

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.

GitHub's custom chat client

  • We still use (and love) Campfire.
  • We use 185 rooms at the moment.
  • We generated 29,168 lines of text on February 4.
  • Of that, Hubot accounted for 13,462 lines.
  • 468 images were pasted in.
  • Our top trafficked room that day was The .com Room, which is where we work on and deploy the main github.com application. It saw 3,896 lines of conversation.
  • “Fuck” was said 84 times that day, with Hubot leading the pack with 14 utterances (our robot has a bit of a potty mouth).
  • We deployed various apps and services 544 times.

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.

GitHub's Team app

  • Twelve employees posted twelve status updates. Some examples of what a status update can look like:
  • Jessica Lord posted a status about a Node module she wrote:
  • Brandon Keepers had been working on some of our open source projects and posted about shutting down Grit, our Ruby library to access Git, in favor of pointing users towards rugged, our libgit2 Ruby library:
  • Dirkjan Bussink announced that he shipped some timezone improvements across github.com (namely tooltips, graphs, and merge commits switched over to rendering in your current timezones):
  • Wynn Netherland posted a photo from the assignment his daughter did in class. Octocats and awwwwwwws were had:

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

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.

GitHub

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:

  • We pushed 1,165 times to repositories under the @github organization. Each of these pushes can include multiple commits, so we probably ended up committing a bunch of stuff.
  • We opened 320 new issues across the @github organization account.
  • We created 186 new pull requests across the @github organization account. 145 of those were merged that same day.
  • We created one new repository under the @github organization account.

Your tools make the difference

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.