Archive for November, 2007

Work with ease

I’m going to be producing another poster. Current draft:

Work with Ease

Do the words “work with ease” get the message across? Or can they be interpreted as “kick back and work as little as possible”? Or as “work should be easy”, which is not quite the same thing?

If they don’t, what few words might? (Keep in mind the space constraints of the poster.)

I’m also considering turning this (and perhaps the other) into a T-shirt. That would allow room for a longer slogan, perhaps “reach for a tool, and it is there” or (more obscurely) “My tools are ready-to-hand“. Suggestions?

(Unrelated questions: If you want to deal easily with print shops, is Illustrator + eps files really the only game in town?)

Latour 2: ANT and the building of the social

A transcript of an OOPSLA talk: Table of contents

Why does Actor-Network Theory (ANT) care so much about things? Latour explains in terms of baboons. Baboons usually have a pretty good life. They don’t have to spend a whole lot of time looking for food, but they do need protection from predators. That means they need to live in packs to survive. How do they keep the packs functioning well? In the words of the Agile Manifesto, they spend a lot of time attending to individuals and interactions. In fact, they spend all their free time attending to individuals and interactions. As a result, they have no time to write software.

We humans have a trick: we substitute things for social forces. Latour uses the example of policemen. Let’s say that society has decided that people should drive slowly down a particular stretch of road. People being what they are, sometimes some of them will want to drive fast instead. One way to prevent that is to station a policeman by the side of the road. That person exerts a social force that will cause people to slow down.

But then we’d be like the baboon: devoting a lot of time to maintaining group norms. Unlike the baboons, though, we have an alternative:

Sleeping-Policeman

In the US, we call these “speed bumps.” In other parts of the world, they’re called “sleeping policemen.” (The model pictured is a Rediweld Sitecop sleeping policeman.)

Through a different mechanism, the sleeping policeman has the same social effect as a human policeman: slower cars and an environment matching collective preferences.

We can take this a step further. Consider neighborhoods. Many sociologists might explain the existence of neighborhoods by appealing to powerful abstract forces like power, class, or racism. An ANT explanation, by contrast, might start with speed bumps.

Consider a car as an “actor” that can affect—push on, act as a force upon—other actors, specifically children. Speeding cars are a danger to children, and they affect their behavior. Children aren’t allowed to play near streets where cars travel fast.

Now suppose speed bumps are put up across those streets. The speed bumps mediate or “translate” the effect of cars on children. The cars become less dangerous. Parents (another set of actors) are more likely to allow children to play outside. As many parents know, children who are playing together outside soon invade houses in packs. Parents come to know the nearby children. And, inevitably, they come to know those childrens’ parents. They begin trading favors like driving children around. They become neighborly.

Now, speed bumps by themselves don’t create a neighborhood, but there are lots of other physical objects that have similar effects, and they keep having these effects, day in and day out. The continual recurrence (”circulation”) of all these forces, all these actors affecting other actors, is (according to ANT) a sufficient explanation for the “assembly” of a neighborhood. We don’t need to bring abstractions like power into the equation.

Does that make neighborhoods somehow less real than cars? (Is ANT purely materialist?) To Latour, neighborhoods are as real as cars if the people in the story talk about them that way. For example, the city council in my town would, if you asked them, say my neighborhood is real. Some time ago, the city wanted to replace our antique street lamps with ugly modern street lamps. The neighborhood pushed back and got more expensive street lamps that fit better with our lovely old brick streets and old trees. To the city council and the people reading about the brouhaha in the newspaper, the neighborhood was an actor that changed things. To Latour, it would be arrogant for an analyst on the outside to tell us that our neighborhood isn’t really real. ANT comes with a respect for the ontology of the people doing the work; that is, it assumes they’re pretty savvy about what things exist in their world.

Latour 1: Testing as an example

Complete table of contents

At OOPSLA in Montreal, I gave an invited talk on Actor-Network Theory (ANT), a style of observation and description that’s most associated with the French philosopher/sociologist Bruno Latour. I told some stories about how I use ANT in my work. I also said some hotheaded things about its relevance for some problems I see with Agile. Because blog posts should be short, I’m going to blog this talk in pieces. Here’s the first.

(This first bit is something of a retread for those who’ve been reading my blog since 2003.)

I’m a consultant. I drop into projects for about a week. I work with the people on the project—pairing, testing, whatever. Along the way, I’m supposed to notice things they don’t see and make suggestions they haven’t already tried, all with the aim of helping them get better at building software.

A tough job: projects are complicated, with lots of moving parts. It’s terribly easy as a consultant to see only the things you’re used to seeing. Worse: it’s easy to see things that aren’t there, just because they’re the things you’re best at seeing.

So a consultant needs mental tricks to kick himself out of ruts and habits. I use ANT as such a trick.

An example: the role of testing in Agile projects

One thing ANT people do is pay attention to things and how they move around.

In the mid-to-late 70’s, Bruno Latour—a philosopher who knew little English and less biochemistry—arrived at the Salk Institute in San Diego, California. Not only did he know little about the content of the work they did there, he deliberately tried to forget what he did know. He wanted to be like an anthropologist visiting some completely foreign tribe with a completely different culture.

As you might expect, some of his observations were odd. For example, he saw that there was one place in the laboratory where, at periodic intervals, bound sheaves of paper called “journals” were delivered.

The Salk Institute

At other places, people called “technicians” tended expensive and balky machines whose purpose seemed to be to make marks on paper (line drawings, blotchy pictures, lists of numbers, and the like). These two sets of paper were delivered to a third place, the “offices” of the “scientists”. The scientists put the two types of paper—journals and “experimental results”—next to each other and compared them. As (and after) doing so, they would write things on new pieces of paper, which they would deliver to a place inhabited by “typists”, who would “type them up” (put them in a tidier form), then send them out the door to “publishers” who would, in due course, bind them up together with other “papers” and deliver the resulting journals to… still more laboratories.

To Latour, it seemed the laboratory was a factory for turning paper into more paper.

Now, Karl Popper, likely the most influential philosopher of science, would describe all of what Latour saw as an epiphenomenon, not what science is really about. What science is really about is this:

  1. A theoretician comes up with a theory. Oddly, the examples always seem to use really great theoreticians, the ones you’ve all heard of.

  2. Someone—maybe the great theoretician, maybe someone else—makes predictions from that theory: in situation X, the world should do thing Y.

  3. An experimenter—who you quite often won’t have heard of—will create situation X and observe whether the world does thing Y.

  4. If the world does not, the great theoretician has to discard the theory and try again.

  5. If the world does do Y, that does not confirm the theory. No number of confirmed predictions logically proves that a theory is true. If, however, the theory passes a sufficient number of challenging tests, scientists are justified in accepting it and using it in their own work.

Popper’s opinion matters to me because some software testers make explicit analogies between Popper’s view of science and testing:

  1. The programmer is like a theoretician, proposing a theory like “for any input X typed into this text box, the program will calculate f(X).”

  2. The tester turns that into a prediction. “So the program should calculate f(X) if the input is one of those things we call a SQL injection attack.”

  3. The tester sets up the experiment, tries a SQL injection attack.

  4. If the program doesn’t work as predicted, the programmer has to go back and try again. The tester gets a little thrill, because it really is fun to break programs.

  5. If the program passes the test, it may still not be correct—no number of passed tests suffices to prove the program is bug-free. But if it passes a sufficient number of challenging tests, managers are justified in releasing it into the world.

The problem is the effect on an Agile team. At the time I was thinking about this (around 2002), there was lots of tension between testers and Agile proponents. Unwise things were said on both sides. Against that backdrop, the testers’ normal drive-by defacements of the programmers’ programs—and the programmers’ egos—wasn’t contributing to the unity of effort I believe is so important on Agile teams. One could say the programmers should be more egoless, but I’m more inclined to work with the grain of human nature than against it.

Popperian science seemed to be the wrong metaphor. (Besides, having read people like Feyerabend and Lakatos, I was pretty skeptical that Popperian science had anything much to do with how real scientists came to accept theories.)

At some point, a detail of Latour’s book describing his Salk experience (Laboratory Life, with Steven Woolgar) came to me. During the process of turning paper into more paper, scientists would hand out “drafts” to other scientists. They’d then get together to discuss the drafts. The conversation would have this tone:

There’s a good chance that Morin is going to be one of the reviewers of this, and you know how she is about antibiotic treatment. If you want this to get past her, you’ll need to strengthen this justification here.

or

I can help you with SAS, make the statistical analysis more solid.

or

If you included the results of assay X, more people would be interested. I can lend you my technician.

The effect is one of people anticipating what dangers the paper will face when it ventures into the world, and making suggestions about how it might be muscled up to survive them. Although I don’t think I realized it at the time, this is the style of paper reviewing that Richard P. Gabriel had imported from the creative writing community into the design patterns community. (See his Writers’ Workshops and the Work of Making Things.)

This, I realized, was a way of having testers’ skills contribute both to the product and also to the team’s feeling of unity of effort. So I began using this new metaphor in my consulting. The particular suggestions I make depend on the team. I might nudge the testers into the role of supporting the (typically overworked) product owner. They could help her talk more more precisely and comprehensively about what she wants. They could then turn that clearer description into tests that programmers could use in the familiar test-first way. Or I might nudge them into the role of teaching the programmers about the domain, one test at a time. (This affects the kinds of tests you write and the order in which you use them.) And so on.

I think this style of thinking about testing is now pretty common in the Agile world. It probably would have happened without me—I’m by no means the only person to think along those lines. That’s not the point: the point is that I probably would not have thought of it had I not absorbed a bit of Latour’s way of looking at things.