News

Tinkering with build notifications

Any development project should include an automated build system. The idea is that you should be able to use a build machine to go from source code to shippable bits in a standard, repeatable fashion. The build system might do its work on a timed basis (once an hour, or every night), or when something significant (like a source code checkin) happens. Different teams use a wide variety of tools for automated builds, from home-rolled command files to free or commercial applications like OpenMake, FinalBuilder, NAnt, Visual Build Professional, or CruiseControl.NET, just to name a few of the popular choices.

To get real value out of an automated build system, though, you need to let everyone know what's going on with the build. Whether the build is broken or not is perhaps the single most critical piece of information a team needs to have at all times. The earliest systems that I worked with used e-mail for notifications. I've also seen a variety of Web-based systems. Unfortunately, these require you to read your e-mail or log on to the intranet, which doesn't always happen when a developer is busy. I've also been a part of teams that used pagers to notify designated developers when things were broken. While this is effective in getting someone's attention, it doesn't give the whole team positive feedback when things are good.

Enter ambient status notifications. The idea here is to use some part of the environment, usually external but sometimes on the computer, to transmit build status to the entire development team. To give you the idea, here are a few such projects that I'm familiar with:

  • Michael Swanson's team hooked up an Ambient Orb to glow green when all was well and red when it wasn't.
  • Alberto Savoia is one of several developers to suggest using a Lava Lamp. I've also seen this idea implemented with two Lava Lamps, one red and one green.
  • Steve Maine discusses using a fake MSN Messenger user to give everyone "toast" notifications right on their computer screen.

You get the idea. Making the build status visible somewhere that everyone will see it can keep everyone focused on the goal of shipping working software. If developers aren't all in one big room, you can place such a feedback device in the break room, lunch room, lobby, or even in the rest room (though please - accomodate all developers by duplicating the installation in his and hers fashion!).

Now, here's an idea for the next time you're building a team from scratch: why not design and build an ambient notification system to get you started? Every team needs teamwork exercises and some agreement on how to plan and execute projects, whether they're using Scrum or some waterfall methodology. Take a couple of days and rig up a build notification system. And perhaps you'll think big. Why not something like the Information Percolator? Or changing the colors of the floodlights in the fountain outside the company headquarters building? Perhaps you could generate different muzak for the elevators (minor key when the build is broken) or waft the scents of fresh coffee or, well, never mind across the development cubicles. If you come up with anything innovative, I'd love to hear from you.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.