Vviewpoints
DOI: 10.1145/1610252.1610266
Article development led by
queue.acm.org
Kode Vicious
Broken Builds
Frequent broken builds could be symptomatic
of deeper problems within a development project.
Dear KV,
Is there anything more aggravating to
programmers than fellow team members checking in code that breaks a
build? I find myself constantly tracking down minor mistakes in other
people’s code simply because they
didn’t check that their changes didn’t
break the build. The worst part is when
someone has broken the build and
they get indignant about my pointing
it out. Are there any better ways to protect against these types of problems?
made to be Broken
is a strong motivator for avoiding antisocial behavior. Like many—or perhaps all—of KV’s suggestions, shaming can be taken too far, but I suggest
you try it and see how it works.
Depending on Mommy to tell off the
misbehaving kids becomes tiresome
both for you and the project management after a while. What you want to
see is a good working culture develop,
one in which people know that breaking the build is like taking a nap in the
middle of the break room; funny once,
but usually unacceptable.
Poor infrastructure can also lead
to suffering with frequently broken
builds. One thing that continues to
amaze me is how computer hardware
gets cheaper, and yet companies continue to coast along without a nightly,
or more frequent, build system. For
the price of a single desktop computer and a few days of scripting, most
teams can have a system that periodically updates a test build of their code,
builds it, and sends email to the team
if the build fails. The amount of time
saved by such a system is easily measurable: subtract 1 from the number
of programmers on a team and multiply the resulting number by the number of hours it usually takes to figure
out who broke the build, find them,
shame them, and have them fix the
build. Now multiply that number by
the average hourly wage of each person on the team, and you have an approximate idea of how much time and
money was wasted by not having peri-
Dear made,
I know you, and everyone else, are expecting me simply to rant about how
you should cut off the tips of the pinkies of the offending parties as a lesson to them and a warning to others
about carelessness. While that might
be satisfying, it’s illegal in most places
and, I’m told, morally wrong.
A frequently broken build is a
symptom of a disease, but it is not the
disease itself. It indicates problems in
any of the following three areas: management, infrastructure, or software
architecture.
PHO TOGRAPH BY ROB BRUCKeR
Management is the area that most
quickly comes to mind when there
is a team- or project-wide problem.
The belief of most of the workers on
a project—those tasked with writing
and verifying code and systems—is
that project-wide problems need to
be solved by Mommy (aka the project
lead or the manager). Unfortunately,
Mommy can remind people only so
often to clean up their rooms, to tie
their shoes, and not to check in broken code.
One of the best solutions to the
problem of people not checking their
code before they check it in is peer
pressure. Anyone who checks in code
without compiling it first ought to feel
embarrassed by such a mistake, and
if not, the other people around them
should strongly encourage them to
feel embarrassed. Shame, it turns out,