Archive for the 'odd ideas' Category

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.

An OOPSLA talk

I staunchly refused Robert Biddle when he invited me to give a talk at OOPSLA. More than once.

I’m not sure when it’s scheduled, but my OOPSLA talk is titled “Actor-Network Theory: Nothing to Do with TCP/IP or Distributed Objects”

Today we agree that DNA is the template for inherited characteristics. But that agreement didn’t just happen the instant Watson and Crick published. Work still had to be done—lots of work. Actor-Network Theory (ANT) is a social science theory about the work done to reach and maintain agreement, particularly in science and technology. It’s my hope that understanding the techniques of ANT will help OOPSLA attendees understand why those Programs, Languages, and Systems we work on are simultaneously so change-resistant and so fragile.

Data mining

I spent some spare time hanging out with sociologists a few years back. One result was a paper on Agile in a sociology book (The Mangle in Practice: look for it from your nearest Duke University Press outlet sometime “soon”.) The co-editor is going to do research in data mining and counterterrorism. He writes:

The dream of course would be to locate people who have actually written data mining programs related to counterterrorism. […] If that proves impossible, I would just be interested in interviewing people who have experience designing data mining programs for other applications.

If you are such a person, mail me, and I’ll put you two in touch. He’s a good guy. He spent time riding in police cars to domestic violence calls, sitting in court, talking to perpetrators, etc. Interesting stories.

Agile as a critically acclaimed television series

The three seasons of Deadwood are an allegory of the history of Agile. Discuss.

For extra credit, identify which season we’re currently in.

Examples “stage” at Agile 2008

Agile 2008 will be arranged around the metaphor of a music festival. There will be a main stage for the big-draw speakers, the larger tutorials for novices, etc.

I was asked to do a stage about testing that wouldn’t help shunt people into silos. (It shouldn’t be “the testing mini-conference”.) I decided the stage would take seriously the usefulness of explicit, concrete examples—executable or no—in the thinking about, construction, and post-construction investigation of software-ish things. Hence the logo:

Examples stage logo
(more…)

Caring about software, public goods games, and our present state

Jason Gorman wants people to pledge that they care about software and that they’ll act on that caring. An impressive roster of people have signed the pledge. So why do I feel discouraged? It’s because of this:

[I pledge to] Offer moral and practical support to those who care as much as I do to help them do the right thing

What does that mean? How will it play out?
(more…)

Knowing how, knowing that

It’s important to have catchy ways to tag ideas with. One good idea, well-tagged, is Gilbert Ryle’s distinction between “knowing how” and “knowing that.”

The peanut butter sandwich game

I used to play a game with my daughter when she was around eight. I’d ask her to define a peanut butter sandwich. She’d say something like “bread with peanut butter on it.” I’d say, “So if I take a slice of bread and put a jar of peanut butter on it, that’s a peanut butter sandwich?” She’d say, “No, it’s a piece of bread with peanut butter spread on it.” And I’d say, “So if I spread peanut butter on both sides of a piece of bread, that’s a peanut butter sandwich?”

This game can go on for a long time.

I was of course trying to teach her that there is no such thing as an unambiguous requirement. Ambiguity is a three-way relationship between a reader, her conception of the writer, and the text.

“Her conception of the writer”: to some people, a peanut butter sandwich has two slices of bread. The raw statement “get me a peanut butter sandwich” is ambiguous until you know which kind of person uttered the statement.

A lot of knowledge of the writer/utterer is not conscious, because conscious thought is inefficient. We spend a lot of time just knowing that other people know that we know what they want. When Sophie asks for a peanut butter sandwich, I short-circuit any consideration of what a peanut butter sandwich really is by knowing what she wants and knowing what past actions have caused her to be satisfied.

That’s part of the reason why requirements are most efficiently transmitted face-to-face.

UPDATE: Joseph Bergin contributes a requirement that depends critically on shared background knowledge and a willingness to overrule the literal meaning:

A sign saying,

Stepping in the same river many times

This is a retitled version of my SPA 2007 talk, “Monasticism for the Married”. It’s an encouragement to think of things as bundles of actions, framed by some alarm about the state of Agile.

Clearly reason was the goal here, and with Mark and Grace calmly looking on, it struck me just how good men are at agreeing exactly what “reason” is, how it should be pursued, and at what cost achieved.

—Thomas H. Cook, The Cloud of Unknowing

I’m intensely aware that at this time tomorrow, you’ll be hearing from Sir Tony Hoare, one of my heroes when I first got into this field. When I noticed him on the programme, I reread his 1980 Turing Award lecture, which contains this famous quote:

I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.

When I was young I wanted nothing more than to pursue that first way, but looking back I see that I haven’t. In such a case, the only honorable thing to do is to blame someone else:

(more…)