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,
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
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
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.