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:
sayan arbitrary string over the office speakers
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.
Joining any sizeable organization is daunting. Having an open, shared space to explore together is important.
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.