Anthropomorphization

Semantically, one rich source of jargon constructions is the hackish tendency to anthropomorphize hardware and software. English purists and academic computer scientists frequently look down on others for anthropomorphizing hardware and software, considering this sort of behavior to be characteristic of naive misunderstanding. But most hackers anthropomorphize freely, frequently describing program behavior in terms of wants and desires.

Thus it is common to hear hardware or software talked about as though it has homunculi talking to each other inside it, with intentions and desires. Thus, one hears “The protocol handler got confused”, or that programs “are trying” to do things, or one may say of a routine that “its goal in life is to X”. Or: “You can't run those two cards on the same bus; they fight over interrupt 9.

One even hears explanations like “... and its poor little brain couldn't understand X, and it died.” Sometimes modelling things this way actually seems to make them easier to understand, perhaps because it's instinctively natural to think of anything with a really complex behavioral repertoire as ‘like a person’ rather than ‘like a thing’.

At first glance, to anyone who understands how these programs actually work, this seems like an absurdity. As hackers are among the people who know best how these phenomena work, it seems odd that they would use language that seems to ascribe consciousness to them. The mind-set behind this tendency thus demands examination.

The key to understanding this kind of usage is that it isn't done in a naive way; hackers don't personalize their stuff in the sense of feeling empathy with it, nor do they mystically believe that the things they work on every day are ‘alive’. To the contrary: hackers who anthropomorphize are expressing not a vitalistic view of program behavior but a mechanistic view of human behavior.

Almost all hackers subscribe to the mechanistic, materialistic ontology of science (this is in practice true even of most of the minority with contrary religious theories). In this view, people are biological machines — consciousness is an interesting and valuable epiphenomenon, but mind is implemented in machinery which is not fundamentally different in information-processing capacity from computers.

Hackers tend to take this a step further and argue that the difference between a substrate of CHON atoms and water and a substrate of silicon and metal is a relatively unimportant one; what matters, what makes a thing ‘alive’, is information and richness of pattern. This is animism from the flip side; it implies that humans and computers and dolphins and rocks are all machines exhibiting a continuum of modes of ‘consciousness’ according to their information-processing capacity.

Because hackers accept that a human machine can have intentions, it is therefore easy for them to ascribe consciousness and intention to other complex patterned systems such as computers. If consciousness is mechanical, it is neither more or less absurd to say that “The program wants to go into an infinite loop” than it is to say that “I want to go eat some chocolate” — and even defensible to say that “The stone, once dropped, wants to move towards the center of the earth”.

This viewpoint has respectable company in academic philosophy. Daniel Dennett organizes explanations of behavior using three stances: the “physical stance” (thing-to-be-explained as a physical object), the “design stance” (thing-to-be-explained as an artifact), and the “intentional stance” (thing-to-be-explained as an agent with desires and intentions). Which stances are appropriate is a matter not of abstract truth but of utility. Hackers typically view simple programs from the design stance, but more complex ones are often modelled using the intentional stance.

It has also been argued that the anthropomorphization of software and hardware reflects a blurring of the boundary between the programmer and his artifacts — the human qualities belong to the programmer and the code merely expresses these qualities as his/her proxy. On this view, a hacker saying a piece of code ‘got confused’ is really saying that he (or she) was confused about exactly what he wanted the computer to do, the code naturally incorporated this confusion, and the code expressed the programmer's confusion when executed by crashing or otherwise misbehaving.

Note that by displacing from “I got confused” to “It got confused”, the programmer is not avoiding responsibility, but rather getting some analytical distance in order to be able to consider the bug dispassionately.

It has also been suggested that anthropomorphizing complex systems is actually an expression of humility, a way of acknowleging that simple rules we do understand (or that we invented) can lead to emergent behavioral complexities that we don't completely understand.

All three explanations accurately model hacker psychology, and should be considered complementary rather than competing.