Campfire Chat – for Devs, SAs, and the People who put up with them

campfireMy first experience with 37 Signals Campfire product was on a fast moving development project with a hard deadline and  a gazillion geographically distant people working around the clock.  We had a daily standup call, but it was essential that we all knew how the development effort was progressing throughout the day (and night).

Using Campfire specifically for project communication

A Campfire account was established for the project, and we set up a “main room” where the devs, scrum master, system administrator and project manager gathered.  There were also “team rooms” set up that allowed the various sub teams to hack through their parts of the code with a smaller audience. Campfire’s persistent chat gave us the ability to “scroll” back to see what we had missed while we were away eating and sleeping.  The upload file function allowed the latest scrubbed DB dumps to be shared among all of us quickly and efficiently.  We didn’t use the conference call feature often, but it was still handy to have in the event of a problem.

One feature that quickly proved both useful and annoying was Campfire sounds.  (Check out this Campfire Cheat Sheet for sound and emoticon codes)  The fun – who doesn’t like to hear “Push it” being played when the code is being deployed?  The not so fun – there are folks who really can’t stand to hear “nyan cat”.   You may genuinely freak people out if you play “horror” at 2:30 am during a code push.  The useful – you need to get the PMs attention? Play the crickets sound, and he’ll check the campfire room to see what’s up.

We integrated Github and Jenkins CI to automatically post to our Campfire room.  On  pull requests we would hear a cheery “Great Job” sound effect and see some text explaining the changes.  Commits were also noted in the Campfire room, and then we would know to be on the lookout for the results of the tests on the latest code from Jenkins.  If the build succeeded, we’d hear a rimshot.  If we heard a sad trombone, we’d know the build was broken and would start troubleshooting so that we could get a fix in.

We also set up Nagios to report problems to the room.  It’s useful for everyone to know that the reason the the code push failed wasn’t that there was some problem with the code, but that the target system was unavailable.
We also set up cron jobs that sent messages to the room to remind us of regularly scheduled events, like “timesheets are due” and “it’s time for scrum, here’s the dial in number”.

Using Campfire for team communication

In the case of our team at LightCastle, we are currently all local and we have an office where we enjoy collaborating in person.  But most of the time we have at least a few team members who are working remotely, and we have an unwritten policy that if you are sick or irritable, you should just keep yourself to yourself.

Initially we were all communicating through email and individual skype sessions.  This was frustrating for team mates who were outside the discussion though, because they’d be unaware of progress and setbacks of the project until someone remembered to share what had changed.  Surprisingly, it was a little bit of a sell to get everyone to use Campfire at first.  But once everyone realized that they could share  and discuss at length pictures of cats, weird stuff from Reddit, and what we they were eating for lunch INSTANTLY to all who were logged in, it was a done deal.  Collaboration flourished.  When a member of the team speaks up in the room about a problem they are working through, they get faster and better feedback.  Instead of simply pairing with another individual to solve the problem, anyone logged in can offer a suggestion.  If a server needs to go down for emergency maintenance, a quick message to campfire and everyone knows.  New memes are distributed with ease.


There have been drawbacks.  We like pranks, and Campfire has been the method for perpetuating one of our favorites: See if you can make someone’s machine blast sounds at inopportune times.  Two of us were having a conference call with a customer and other developers, when someone in our LC Campfire room typed “/play loggins”.  I scrambled to hit the mute button on my laptop, and there was silence on the call.  Finally someone on the call spoke up and asked, “Are we all just going to pretend we didn’t hear that?”  If one of us realizes that a team mate is working out of a library or coffee shop, it’s almost ensured that a cacophony of Campfire sounds will ensue.

To sum it up, Campfire is fun.  And, unlike IRC, there is a low barrier to entry. We can easily invite the technical and non-technical into a common community that enables great communication and a strong sense of team across many boundaries – both physical and mental.