Why GitHub Hacks on Side Projects


GitHub employees have gotten very good at writing irrelevant code.

In my Automating Inefficiencies screencast, I showed some goofy ways we use animated gifs, inside jokes, and hacks to make our Campfire chat room more fun. Some days we’ll spend a decent chunk of work time on these projects. They don’t directly contribute to our bottom line, most of these projects won’t be released publicly, and the code quality itself is questionable.

I couldn’t be happier about that.

To take one example: Hubot, our valiant Campfire bot, has continued to grow in complexity. A tiny list of his (current) capabilities:

  • unlock the door to our office
  • print out a list of the people currently in the office based on their wifi presence
  • find an apartment in the area to rent
  • deploy GitHub
  • say an arbitrary string over the office speakers
  • play an audio sample of deadmau5 to everyone through hacked Propane HTML5 <audio> tags
  • give you a quote from any movie or TV show
  • tell you the build status of any git branch
  • track and map packages
  • SMS any GitHubber from Campfire
  • embed a seven day weather forecast

We’re building more and more into Hubot every day. (Before you ask, no, he’s not open source yet, and yes, a few people are working on that.) Update, October 25, 2011: Hubot is open source.

Embrace your newbies

The importance, in my mind, is not that Hubot can do all of these really cool things. That’s fun. But what’s really important is Hubot is a shared side project within GitHub. He’s a node.js bot, so most developers with a working knowledge of JavaScript can easily contribute to him. I get a kick out of seeing our latest hire add something funny or interesting to Hubot in their first week of employment; doing so offers a real sense of ownership and belonging when everything else is new around you.

Joining any sizeable organization is daunting. Having an open, shared space to explore together is important.

Make your mouth do that smile thing

It’s also a pleasant distraction. I love what I work on and most days are a blast, but even fun jobs can be a grind from time to time. It’s nice to take a break mentally and get jacked up on something exciting. More than once I’ve found myself hitting a wall, switching gears to Hubot or a few other GitHub projects, working heads-down for an hour or three, and then discovering I’m ready to slaughter the original problem I had.

Programmer productivity is not impacted by number of hours; it’s impacted by the quality of those hours.


You should build out a side project culture. A Campfire bot is natural for us, since we spend so much time in Campfire, but there’s plenty of other areas. Hack on your continuous integration server. An app that picks where you’re having lunch that day. A miniapp that collects and stores employee-created animated gifs. A continuous integration animated lunch machine. It doesn’t matter what it is; if it improves the lives of your coworkers or makes them laugh, it helps build a stronger company culture. And that’s cool.