Professional Documents
Culture Documents
Normal Accidents
Normal Accidents
Technically Speaking
later. In contrast to houses, there may Having read Perrow, what easy—who’s looking?—but slipping
be only one order in which you can thoughts might I have? Pair program- unwatched changes past your “other
make a chemical product. ming looks good. It works to reduce half” is hard.
More generally, a loosely-coupled complexity by preventing dangerous Why do reviews take forever?
system allows alternate methods to specialization. Using different part- The reviewers all have other tasks
reach the goal, as well as the time in ners means that eventually everyone that are more important to them. My
which to find them. Methods are op- gains familiarity with many parts of code doesn’t depend in any way on
portunistic—successful jury-rigging is the system. That makes it easier to the reviewer’s—we’re not in produc-
common. In a tightly-coupled system, make changes without inadvertently tion sequence—but my progress de-
however, attempts to jury-rig often breaking something you didn’t know pends on hers. If she’s having prob-
make things worse. about—and when you do break some- lems, my review will be hurt. (In the
(Note that Perrow’s definition of thing, you can figure the problem out lingo, she causes a common mode
“tight coupling” is at odds with how faster. Since Extreme Programming is failure.) In pair programming, the
the term is used in the software engi- designed for complex programs person I depend on thinks our task is
neering literature, in which its mean- whose requirements change frequent- as important as I do.
ing is closer to what Perrow calls in- ly, generalists are essential. Coding before the review is done
teractive complexity.) Pair programming increases visi- causes yet more complexity. The out-
bility. In most organizations, there’s a put of the design now feeds into two
formal process and an actual one. The parallel steps: reviewing and coding.
Seeing Through formal process might say “no coding When coding reveals problems in the
until after the design review.” The ac- design—which it always does—more
Perrow’s Lens tual one says, “You don’t have time to “components” (people) are affected.
Suppose I’m a development manager. wait for the design review. Start cod- In pair programming, everyone imme-
One of my developers has read ing now, and incorporate the results diately concerned is sitting right there
about “pair programming” as used of the review after it happens.” (This at the moment problems are found, so
in the rapid development style is an attempt to reduce coupling, akin the feedback loop is simpler.
called Extreme Programming to starting another task while waiting I’m making no blanket condem-
(www.armaties.com), and thinks we for the shingles to arrive.) When the nation of design reviews. There’s am-
should try it. project runs into problems, the Pow- ple evidence that we should do more
Teams using pair programming ers That Be tend to intervene in of them, not less. My point is only that
never write code except in pairs sit- what’s supposed to be happening, not Perrow’s analysis is one way to help
ting together at one computer. One what’s actually happening. The inter- us better anticipate consequences of
types, while both actively observe and ventions can make the actual process our process decisions. STQE
talk through what is being created worse, as happened at Three Mile Is-
(essentially doing a real-time review). land. In pair programming, the formal
STQE magazine is produced by
At the end of a development task, and actual processes are closer be-
STQE Publishing, a division of
pairs split up and move on to other cause monitoring is more immediate.
Software Quality Engineering.
tasks in other parts of the system. Coding while waiting for a review is
6
www.stqemagazine.com Software Testing & Quality Engineering July/August 1999